Ingredients
Method
- Heat the oven to 325 degrees F and butter a 3-quart or 9x13-inch casserole dish.
- Bring a large pot of water to a boil, add 1 tablespoon of salt and the macaroni, and cook until 2 minutes shy of package al dente. Reserve 3/4 cup of the pasta water, drain, then toss the noodles with the oil so they don't clump.
- In a large bowl, toss the cheddar, Gruyere, and mozzarella together. Set aside 2 cups for the topping.
- In a large Dutch oven over medium heat, melt the butter. Once it foams, whisk in the flour and keep whisking about 2 minutes, until it smells nutty and turns pale gold.
- Slowly stream in the whole milk, evaporated milk, and reserved pasta water while whisking. Bring to a bare simmer, then whisk in the cream cheese until completely melted and smooth.
- Whisk in the mustard powder, smoked paprika, garlic powder, onion powder, 1 teaspoon salt, black pepper, and nutmeg. Reduce heat to low and simmer 2-3 minutes, until it thickens to a light gravy.
- Take the pot completely off the heat. Add the remaining cheese in three additions, stirring each until fully melted before adding the next. The residual heat is enough to melt it, and keeping it off the burner is what prevents a grainy sauce.
- Fold in the pasta until every noodle is coated. Taste and adjust the salt and pepper.
- Pour into the prepared dish and scatter the reserved 2 cups of cheese over the top. (For a panko topping instead, combine the panko, melted butter, parmesan, and a pinch of smoked paprika, and scatter that over.)
- Bake 20 minutes, until bubbling around the edges. For a browned top, broil 90 seconds to 2 minutes, watching constantly.
- Let it rest 5-10 minutes before serving so the sauce sets.
Notes
Cheese sauces break when they get too hot. Past roughly 180 degrees F, the proteins tighten and squeeze out the fat, which is what makes mac and cheese grainy. Once broken, it can't be fixed, so prevention is everything.
Take the pot fully off the heat before adding cheese. A simmering bechamel is already around 190 degrees F. Residual heat melts the cheese just fine.
Medium cheddar rather than sharp is deliberate. Aged cheeses have less moisture and clumpier proteins, so they break more easily. The Gruyere covers the flavor.
The evaporated milk, cream cheese, flour, and mustard all act as emulsifiers, which is why this sauce is more break-resistant than most.
Grate cheese from blocks. Pre-shredded is coated in starch that keeps it from melting cleanly.
Make ahead: assemble fully, cool, cover, and refrigerate up to 2 days. Bake from cold at 325 degrees F, adding 10-15 minutes.
Store leftovers up to 4 days, or freeze up to 3 months. Reheat gently with a splash of milk, in 20-second microwave bursts or covered in a low oven.
