1 lb. pasta shapes
6 tbsp. unsalted butter, divided
1 lb. cremini (baby bella mushrooms), roughly chopped
1/4 cup chopped red onion
2-3 cloves garlic, finely minced
Salt and pepper, to taste
1 tbsp. white wine vinegar
3 tbsp. all-purpose flour
2 tsp. fresh rosemary, minced
2 tsp. fresh thyme, minced
2 cups whole milk
6 oz. (1½ cups) shredded Gruyere cheese, divided
6 oz. (1½ cups) shredded white cheddar cheese, divided
½ cup panko breadcrumbs
Grease a 9 x 13″ baking dish. Bring a large pot of salted water to a boil. Cook the pasta according to the package directions, just until al dente. Drain the pasta, return to the pot, and set aside.
Meanwhile, melt 2 tablespoons of the butter in a 12-inch skillet over medium heat. Add the chopped mushrooms and onion to the pan and sauté until the mushrooms are tender and almost all of the liquid has evaporated from the pan, about 5-7 minutes. Stir in the garlic and sauté about 1 minute more, just until fragrant. Remove the pan from the heat, season the mixture with salt and pepper, and mix in the white wine vinegar. Set aside.
In a medium saucepan, melt 3 tablespoons of the butter over medium-high heat. Once the butter is completely melted, whisk in the flour to form a paste. Cook for 1-2 minutes, stirring constantly, until golden. Stir in the fresh herbs and cook for 30 seconds, just until fragrant. Whisk in the milk and cook the mixture, stirring frequently, until the mixture simmers and begins to thicken. Once the mixture has thickened, remove from the heat. Whisk in the shredded Gruyere and cheddar cheeses until completely melted and smooth.
Pour the cheese sauce over the cooked pasta. Add the mushroom and shallot mixture to the pot as well. Toss well to thoroughly combine. Transfer the mixture to the prepared baking dish. In a small bowl combine the panko breadcrumbs with the remaining 1 tablespoon of butter, melted. Toss with fork to coat the crumbs evenly. Sprinkle the breadcrumbs evenly over the pasta in the baking dish.
Bake for 15-20 minutes, until browned and bubbly. Let stand 10 minutes before serving.