Cook the macaroni: Bring a large pot of water to a boil and cook the macaroni according to the package directions until tender. Drain well and set aside so it’s ready to be folded into the sauce.
Make the roux: In a medium saucepan, melt the butter over medium heat. Stir in the flour and cook for 1 to 2 minutes, whisking constantly, until the mixture turns lightly golden and smells slightly nutty.
Build the sauce: Slowly whisk in the milk, salt, black pepper, and Dijon mustard. Keep stirring as the mixture cooks over medium heat for about 5 to 7 minutes, until it thickens into a smooth, creamy sauce.
Melt the cheeses: Remove the saucepan from the heat and gently stir in the cheddar, Gruyère, and Parmesan. Continue stirring until all the cheese is fully melted and the sauce is silky and smooth.
Combine with pasta: Add the cooked macaroni to the cheese sauce and stir until every piece of pasta is evenly coated in the creamy mixture.
Optional baked finish: For a baked version, preheat the oven to 350 degrees. Transfer the macaroni and cheese to a greased baking dish and bake for about 30 minutes, until the top is lightly golden and bubbling around the edges.
Serve and enjoy: Serve the macaroni and cheese warm while it’s at its creamiest and most comforting.