Cook the pasta 1 minute shorter than the package instructions. Drain and set aside.
Grate Gruyere and cheddar cheese on the large holes of a box grater.
Make brown butter: melt butter in a pot then cook it over medium heat, whisking often, until butter turns light brown and smells nutty.
Add flour and whisk until combined. Cook over low heat for about a minute.
Add milk, heavy cream, and spices (paprika, onion and garlic powder, cayenne pepper, Dijon mustard). Whisk until combined, bring to a boil and cook for 2 minutes.
Cook the milk mixture over very low heat and make sure it's cooking very gently. Gradually add cheese, about 1/2 cup at a time, whisking after every addition until the cheese is melted and incorporated into the sauce.
When all the cheese has been added season the sauce with lemon juice, salt, and black pepper. You should have a smooth sauce but if yours look grainy, just blend it with a hand mixer/blender and it will be perfect. I often mix the sauce additionally with the blender even if it's already smooth - it won't split when reheated or frozen and thawed.
Add the cheese sauce and cooked and drained macaroni to a 9x13 inch (23x33cm) casserole dish, and stir them together. The mac and cheese will be too runny at this point - baked mac and cheese must be really runny before going into the oven or it will turn out dry. It will thicken in the oven and then more while cooling.
Make the topping: melt the butter in a medium pot, add the breadcrumbs and stir to coat. Take the pot off the heat and stir in the parmesan cheese.
Top the mac and cheese with the breadcrumb topping. Bake for 20-25 minutes or until the topping is golden and crunchy. Let stand for 5 minutes to thicken slightly then dig in!
Enjoy!
Notes
Calories = 1 serving (1/10 of the recipe). This is only an estimate!