Cook the macaroni according to package directions until al dente.
Drain the macaroni and set aside, reserving about 1 cup of the pasta water.
In a saucepan, melt the butter over medium heat.
Whisk in the flour and cook for about 2 minutes, creating a roux that bubbles but does not brown.
Gradually whisk in the milk, ensuring the mixture is smooth and free of lumps.
Continue to cook the mixture, whisking constantly until it thickens and bubbles.
Remove the pan from heat and stir in the cheddar, Parmesan, Dijon mustard, salt, and pepper until smooth.
Pour the cheese sauce over the cooked macaroni and stir until fully coated.
If the sauce is too thick, stir in reserved pasta water a little at a time until you reach the desired consistency.
Transfer the macaroni and cheese to a baking dish, adding breadcrumbs if desired.
Bake in a preheated oven at 350°F (175°C) for about 20-25 minutes or until bubbly and golden on top.
Let it cool slightly before serving to help the cheese sauce firm up.