Assemble your ingredients.
Preheat the oven to 400°F.
Cook the spaghetti according to package instructions. Drain and set aside.
Over medium heat, melt the butter in a saucepan. Add flour and whisk until smooth. Cook until they are golden brown in color, about 30 seconds.
Season with salt, pepper, garlic powder, and cayenne pepper and stir to combine well.
Add half and half gradually, whisking 30-60 seconds, between each addition. Do this until the sauce has thickened.
Now, stir in heavy cream until the sauce is smooth. Bring to a simmer, stirring frequently. Lower the heat to low and whisk half of the cheeses until they are melted. Remove the pan from heat.
Place the spaghetti into the sauce made and stir until the pasta is fully coated with sauce.
Top it with remaining cheeses and bake for 30 minutes or until the cheese is melted.