01 - Preheat oven to 400°F if baking with a breadcrumb topping.
02 - Bring a large pot of salted water to a boil. Add the macaroni and cook until just al dente according to package instructions. Drain and set aside.
03 - In a large saucepan over medium heat, melt 2 tbsp butter. Whisk in the flour and cook for 1 minute, stirring constantly to form a smooth roux.
04 - Gradually whisk in the warm milk, ensuring there are no lumps. Continue to cook, stirring frequently, until the sauce thickens and coats the back of a spoon, about 5 minutes.
05 - Remove the pan from heat. Stir in the grated cheddar, Gruyère (if using), salt, pepper, nutmeg, and Dijon mustard until the cheese is fully melted and the sauce is smooth.
06 - Fold the cooked macaroni into the cheese sauce until every piece is evenly coated.
07 - If using the topping, transfer the macaroni and cheese into a baking dish. Combine breadcrumbs, melted butter, and Parmesan; sprinkle evenly over the surface. Bake for 15–20 minutes until golden and bubbly.
08 - Serve hot, garnished with extra cheese or fresh herbs if desired.