01 - Preheat oven to 350°F if baking with the breadcrumb topping.
02 - Bring a large pot of salted water to a boil. Cook elbow macaroni according to package directions until al dente. Drain thoroughly and set aside.
03 - In a saucepan, melt butter over medium heat. Whisk in flour and cook for 1 minute, stirring constantly, until the mixture forms a smooth roux and turns slightly golden.
04 - Gradually whisk in the whole milk, pouring slowly to prevent lumps. Simmer while whisking constantly until the sauce thickens and coats the back of a spoon, about 4–5 minutes.
05 - Reduce heat to low. Add both cheddar cheeses and Dijon mustard, stirring until the cheese is completely melted and the sauce is silky smooth. Season with salt and black pepper to taste.
06 - Fold the cooked macaroni into the cheese sauce, stirring gently until every piece is evenly coated.
07 - For a baked version, transfer the mixture to a greased baking dish. Combine breadcrumbs, melted butter, and grated Parmesan in a small bowl, then sprinkle evenly over the top. Bake for 15–20 minutes until the topping is golden and crispy.
08 - Remove from oven and let rest for 2–3 minutes. Serve hot while the cheese sauce is still creamy and the topping is crisp.