- 5 tablespoons unsalted butter, plus more for the dish
- ¼ cup unbleached all purpose flour
- 2 cups warm whole milk
- 2 cups (½ pound) grated sharp cheddar cheese
- 2 cups (½ pound) grated Gruyere cheese
- ½ teaspoon ground nutmeg
- Pinch of cayenne pepper
- Kosher salt
- Freshly ground black pepper
- 1½ cups diced onion
- ½ cup white or cremini mushrooms, stemmed and thinly sliced
- ½ cup shiitake mushrooms, stemmed and thinly sliced
- ½ pound cooked ham, cut into ¼-inch dice
- 1 cup heavy cream
- 1 pound elbow macaroni or cavatappi pasta
- 4 tablespoons freshly grated Parmesan cheese
- Preheat the oven to 350°F. Generously butter a 2-quart baking dish.
- Melt 4 tablespoons of the butter in a large saucepan over medium heat. Add the flour and cook for 2 minutes, stirring constantly. Whisk in the milk until thoroughly blended. Cook, whisking constantly, until the mixture begins to thicken. Remove from the heat and stir in the cheddar and Gruyere cheeses, nutmeg, cayenne pepper, and salt and pepper to taste.
- Melt the remaining 1 tablespoon of butter in a skillet and add the onion and mushrooms. Cook, stirring, until softened. Add the ham and cook, stirring, about 1 minute. Stir into the cheese sauce. Stir the cream into the sauce and stir to blend well.
- Meanwhile, bring a large pot of salted water to a boil and cook the macaroni until al dente. Drain and return the macaroni to the pot. Add the cheese sauce and stir to blend well. Spoon the mixture into the prepared dish and sprinkle with the Parmesan cheese. (The dish may be prepared up to this point and refrigerated, covered, up to 8 hours ahead of time. Bring to room temperature before baking.)
- Bake until the mixture is hot and bubbling, about 25 to 30 minutes. Remove and turn on the broiler. Brown the macaroni and cheese under the broiler until the top is nicely browned, about 3 minutes. Serve at once.