Cook the elbow macaroni until al dente in a large pot of salted water.
In a separate saucepan, melt the butter over medium heat.
Whisk in the flour and cook for 1-2 minutes until it’s bubbly and golden.
Slowly add the whole milk while continuously whisking until smooth and thickened.
Stir in the Dijon mustard, garlic powder, and paprika, then season with salt and pepper.
Remove the sauce from heat and fold in the cheddar and Gruyère cheese until fully melted and smooth.
Combine the cooked macaroni with the cheese sauce, mixing well to ensure even coating.
Transfer the mixture to a baking dish and spread evenly.
If desired, add breadcrumbs on top for a crunchy texture, then bake at 350°F for 25-30 minutes until golden and bubbly.