01 - Preheat oven to 400°F if baking with the breadcrumb topping.
02 - Bring a large pot of salted water to a rolling boil. Add the elbow macaroni and cook until just al dente according to package directions. Drain well and set aside.
03 - In a large saucepan over medium heat, melt 2 tablespoons of butter. Sprinkle in the flour and whisk constantly for 1 minute to form a smooth roux.
04 - Gradually pour in the warm milk while whisking vigorously to prevent lumps. Continue cooking and stirring for about 5 minutes until the sauce thickens enough to coat the back of a spoon.
05 - Remove the pan from heat. Stir in the grated cheddar, Gruyère (if using), salt, pepper, nutmeg, and Dijon mustard. Mix until the cheese is completely melted and the sauce is silky smooth.
06 - Fold the drained macaroni into the cheese sauce, tossing gently until every noodle is evenly coated.
07 - If using the topping, transfer the macaroni and cheese to a buttered baking dish. Combine the breadcrumbs, melted butter, and Parmesan in a small bowl, then sprinkle evenly over the surface. Bake for 15 to 20 minutes until golden and bubbly.
08 - Let rest for a few minutes before serving. Garnish with extra grated cheese or fresh herbs if desired.