Preheat the oven to 350°F and grease a 9x13” baking dish. Set it aside.
Boil a large pot of water, then cook the macaroni until 1-2 minutes shy of al dente, per package instructions. It will continue cooking in the oven, so avoid overcooking.
Drain the pasta and return it to the pot. Stir in two tablespoons of butter to coat the pasta. Set aside to cool, away from heat.
Combine the shredded cheeses in a large bowl and set aside.
In a large saucepan over medium heat, melt the butter.
Add the flour, stirring constantly for one minute until well combined.
Gradually whisk in the milk until smooth and lump-free. Then, slowly whisk in the heavy cream until the mixture is smooth.
Add seasonings and cook the sauce until it thickens, stirring often to prevent burning.
Remove from heat and mix in 3/4 of the shredded cheese. Stir until the cheese is partially melted and well combined with the sauce.
Pour the cheese sauce over the cooled pasta in the pot. Stir to coat the noodles evenly.
Transfer half of the pasta mixture to the prepared baking dish. Sprinkle with the remaining cheese, then add the rest of the pasta mixture on top.
In a medium bowl, melt 3 tablespoons of butter. Mix the melted butter with breadcrumbs and sprinkle over the macaroni and cheese.
Bake for 25-30 minutes until the sauce is bubbly and the topping is golden brown.
Garnish with fresh parsley if desired and serve.
Notes
Grate Your Own Cheese: Pre-shredded cheese contains anti-caking agents that can affect the smoothness of the sauce. For the best texture, grate your own cheese from blocks.
Use Freshly Grated Cheese: Freshly grated cheese melts better than pre-shredded cheese, ensuring a smoother, creamier sauce.
Don't Overcook the Pasta: Cook the pasta just shy of al dente. It will continue to cook in the oven, absorbing more of the cheese sauce for the perfect texture.
Warm the Milk and Cream: Bringing the milk and cream to room temperature before adding to the roux helps prevent lumps and ensures a smoother sauce.
Taste the Sauce: Before combining the sauce with the pasta, taste it and adjust the seasoning if necessary. This ensures the best flavor.
Layer for Extra Cheesiness: Adding a layer of cheese between layers of pasta ensures every bite is extra cheesy.
Rest Before Serving: Let the dish sit for a few minutes after baking. This allows the sauce to thicken and set, making it easier to serve.