Heat the oven: Preheat to 375°F (190°C).
Grease a 9x13-inch baking dish or a similar casserole.
Cook the pasta: Bring a large pot of salted water to a boil. Cook pasta until just shy of al dente (1–2 minutes less than the package suggests). Drain and toss with a teaspoon of olive oil to prevent sticking.
Start the roux: In a large pot, melt 4 tablespoons butter over medium heat.
Add flour and whisk for 1–2 minutes until it smells toasty and looks smooth. Don’t let it brown too much.
Build the sauce: Slowly whisk in milk and cream. Keep whisking to avoid lumps.
Simmer gently for 5–7 minutes until it thickens enough to coat the back of a spoon.
Season the base: Stir in garlic, Dijon, hot sauce, onion powder, smoked paprika, 1 teaspoon salt, and several grinds of pepper. Taste and adjust now—seasoning the base makes the cheese sing later.
Add the cheese: Reduce heat to low. Stir in cheddar and Gruyère a handful at a time until smooth.
Fold in half the Parmesan. If it seems too thick, splash in a bit more milk.
Combine with pasta: Add the drained pasta and toss until every nook is coated. The sauce should be slightly loose; it will tighten in the oven.
Make the topping: In a small skillet, melt remaining 2 tablespoons butter with 1 tablespoon olive oil over medium heat.
Add panko and cook, stirring, until golden, 2–3 minutes. Stir in remaining Parmesan and a pinch of salt.
Assemble: Pour mac and cheese into the baking dish. Sprinkle the toasted panko evenly over the top.
Add chopped herbs if using.
Bake: Bake 15–20 minutes until bubbling at the edges and the top is crisp. If you want extra color, broil for 1–2 minutes at the end, watching closely.
Rest and serve: Let it rest 5–10 minutes so the sauce settles. Scoop and serve hot.