Ingredients
- 12 oz short pasta such as rotini or shells
- 3 cups diced cooked ham
- 3 tbsp unsalted butter, divided
- 1 small yellow onion, finely diced
- 3 tbsp all-purpose flour
- 2 1/2 cups whole milk
- 1 tsp Dijon mustard
- 2 cups sharp cheddar, freshly shredded
- 1 cup Gruyere or Monterey Jack, shredded
- 1/2 tsp black pepper
- 1/2 cup panko breadcrumbs
- 2 tbsp grated Parmesan
Instructions
Follow each step in order. The directions below are written so a beginner can understand what to do, what to look for, and when to move on to the next step.
- Step 1.Heat the oven to 375°F, lightly grease a 9-by-13-inch baking dish, and bring a large pot of well-salted water to a boil.
- Step 2.Cook the pasta for about 2 minutes less than the package's al dente time, then drain well so it does not become overly soft in the oven.
- Step 3.Melt two tablespoons of butter in a saucepan over medium heat, add the onion, and cook for 4 to 5 minutes until softened.
- Step 4.Sprinkle in the flour and stir constantly for 1 minute, then slowly whisk in the milk until the mixture is smooth with no pockets of dry flour.
- Step 5.Simmer gently for 3 to 5 minutes until the sauce thickens, then stir in Dijon, black pepper, cheddar, and Gruyere until melted and smooth.
- Step 6.Fold the drained pasta and diced ham into the cheese sauce, tasting before adding any extra salt because both ham and cheese are naturally salty.
- Step 7.Transfer the mixture to the prepared baking dish and spread it into an even layer without pressing the pasta down tightly.
- Step 8.Melt the remaining tablespoon of butter and combine it with panko and Parmesan, then scatter the crumbs evenly over the casserole.
- Step 9.Bake uncovered for 25 to 30 minutes until the edges bubble and the breadcrumb topping is golden brown.
- Step 10.Rest for 5 to 10 minutes before serving so the sauce settles slightly and each portion can be spooned out cleanly.

