Bring a large pot of salted water to a boil. Add the elbow macaroni and cook until al dente according to package instructions.
In a large saucepan, melt butter over medium heat.
Add flour and whisk continuously for about 2-3 minutes to cook out the raw flour taste.
Slowly pour in milk, whisking constantly to avoid lumps. Continue stirring until the sauce thickens (about 5-7 minutes).
Add salt, black pepper, garlic powder, onion powder, nutmeg, and paprika to the sauce. Stir well to incorporate the flavors.
Lower the heat and add the cheddar cheese and mozzarella cheese, stirring until melted and smooth.
Add the cooked macaroni to the cheese sauce, stirring until fully coated.
Place the macaroni in an oven-safe dish, sprinkle extra shredded cheese on top, and bake in a preheated oven at 175°C/ 350°F for 25 minutes covered, then uncover and bake for another 10 minutes.
Serve immediately while warm and creamy.
Notes
Don’t skip the roux: That butter-and-flour mixture is what makes the cheese sauce thick and velvety. Just make sure to whisk it well so there are no lumps.Warm the milk first: Cold milk can make the sauce lumpy or take longer to thicken. Warming it a little before adding it to the roux helps everything blend smoothly.Season, season, season!: Cheese is delicious, but a little extra seasoning (like garlic powder, onion powder, and even a pinch of nutmeg) makes the flavors pop. Don’t be afraid to taste and adjust!Cook the pasta just right: You don’t want mushy mac and cheese! Cook your pasta just until it’s al dente because it will soften more when mixed with the hot sauce.Cook the pasta just right: You don’t want mushy mac and cheese! Cook your pasta just until it’s al dente because it will soften more when mixed with the hot sauce.