01 - Set the oven to 350°F and lightly grease a 2-quart baking dish.
02 - Bring a large pot of salted water to a boil. Cook elbow macaroni until just al dente, about 1 to 2 minutes less than package directions. Drain and set aside.
03 - In a large saucepan over medium heat, melt butter. Whisk in flour and stir constantly for 1 to 2 minutes without browning to form a roux.
04 - Gradually whisk in whole milk, stirring continuously to prevent lumps. Cook until sauce thickens and coats the back of a spoon, about 5 to 7 minutes.
05 - Remove from heat. Stir in Dijon mustard, garlic powder, onion powder, salt, and black pepper. Add sharp cheddar and Gruyère cheeses until fully melted and smooth.
06 - Add drained macaroni to the cheese sauce, mixing until evenly coated. Transfer to the prepared baking dish.
07 - In a small bowl, toss breadcrumbs with melted butter and Parmesan cheese if using. Evenly sprinkle over the macaroni mixture.
08 - Bake in the preheated oven for 25 to 30 minutes until the topping is golden brown and sauce is bubbling.
09 - Allow to rest for 5 minutes before serving. Garnish with chopped fresh parsley if desired.