This easy baked mac and cheese is the ultimate comfort food made entirely from scratch — a rich, velvety cheese sauce built from a classic roux, loaded with sharp cheddar and nutty Gruyère, tossed with perfectly al dente elbow macaroni, and finished with a golden, buttery panko breadcrumb crust that bakes up irresistibly crispy. It comes together with simple pantry staples in under an hour and delivers that deep, cheesy flavor and bubbly, golden top that makes homemade baked mac and cheese so much better than anything from a box.
Heavy-bottomed medium saucepan For making the cheese sauce
9x13-inch baking dish For baking the mac and cheese
Colander For draining pasta
Box grater For freshly grating cheese
Whisk For making a lump-free roux and sauce
Wooden spoon or silicone spatula For folding pasta into sauce
Measuring cups and spoons
Small skillet For pre-toasting the breadcrumb topping
Aluminum foil (optional) For tenting if topping browns too quickly
Ingredients
For the Pasta
1lbelbow macaroni450g
For the Cheese Sauce
4tbspunsalted butter57g
1/4cupall-purpose flour30g
3cupswhole milk720ml, warmed
1cupheavy cream240ml
2cupssharp cheddar cheeseabout 225g, freshly grated from a block
1cupGruyère cheeseabout 115g, freshly grated
1tspDijon mustard
1/2tspgarlic powder
1/4tsponion powder
1/4tspsmoked paprika
saltto taste
freshly cracked black pepperto taste
cayenne pepperpinch, optional, for a subtle kick
For the Breadcrumb Topping
2tbspunsalted butter28g
1cuppanko breadcrumbsabout 60g
1/2cupsharp cheddar cheeseabout 55g, freshly grated, for the topping
Instructions
Preheat your oven to 375°F (190°C). Lightly grease a 9x13-inch baking dish with butter or non-stick spray, coating the bottom and sides, then set aside.
Bring a large pot of generously salted water to a boil, add the elbow macaroni, and cook for 2 minutes less than the package directions (until just underdone). Drain through a colander — do not rinse — and toss with a tiny drizzle of olive oil to prevent sticking.
Melt 4 tablespoons of butter in a heavy-bottomed saucepan over medium heat, then whisk in the flour and cook for 1-2 minutes, stirring constantly, until the mixture is smooth and smells lightly nutty.
Slowly pour in the warmed milk and heavy cream in a steady stream while whisking constantly, then increase heat to medium-high and whisk until the sauce thickens enough to coat the back of a spoon, about 5-7 minutes. Reduce heat to medium-low.
Stir in the Dijon mustard, garlic powder, onion powder, smoked paprika, cayenne (if using), and salt and pepper to taste, then remove the pan from the heat. Add the cheddar and Gruyère in two or three additions, stirring after each until the sauce is completely smooth and glossy.
Add the drained macaroni to the cheese sauce and fold until every piece of pasta is thoroughly coated, then transfer the mixture to the prepared baking dish and spread into an even layer.
Melt 2 tablespoons of butter in a small skillet over medium heat, add the panko breadcrumbs, and stir for 1-2 minutes until lightly golden. Remove from heat, stir in the 1/2 cup of grated cheddar, and sprinkle the mixture evenly over the top of the mac and cheese.
Bake uncovered at 375°F (190°C) for 25-30 minutes, until the topping is deeply golden and the sauce is bubbling around the edges. Rest for 5 minutes before serving.
Notes
Grate your own cheese: Pre-shredded cheese contains anti-caking agents that prevent smooth melting. Always grate from a block for the creamiest sauce.
Undercook the pasta: Cook the macaroni 2 minutes less than the package directions — it finishes cooking in the oven, preventing mushy results.
Warm the milk: Adding cold milk to a hot roux can cause lumps. Warm it in the microwave or on the stovetop before adding.
Remove from heat before adding cheese: Adding cheese to boiling sauce can cause a grainy, broken texture. Always take the pan off the heat first.
Pre-toast the breadcrumbs: Toasting the panko in butter before baking guarantees a crispy, golden topping rather than a soggy one.
Make-ahead: Assemble the dish (without the breadcrumb topping) up to 24 hours in advance, refrigerate covered, then add topping and bake for 30-35 minutes straight from the fridge.
Storage: Refrigerate leftovers in an airtight container for up to 4 days, or freeze in portions for up to 3 months.
Reheating: For best results, reheat in a 350°F oven with a splash of milk added and loosely tented with foil for 20-25 minutes. Remove the foil for the last 5 minutes to re-crisp the topping.
Cheese swaps: Fontina, white cheddar, or a combination of Parmesan and mozzarella all work well as substitutes if Gruyère is unavailable.
Gluten-free option: Use gluten-free elbow pasta, a 1:1 gluten-free flour blend for the roux, and gluten-free panko breadcrumbs for a fully gluten-free version.