Preheat the oven to 350°F and cook 16 ounces elbow macaroni according to package directions, then drain and set aside.
In a large saucepan, melt 6 tablespoons unsalted butter over medium heat, then whisk in 6 tablespoons flour and cook for 1–2 minutes until lightly browned.
Gradually whisk in 2 cups whole milk and 1 cup heavy whipping cream, stirring constantly until the mixture thickens.
Stir in ½ teaspoon onion powder, ½ teaspoon garlic powder, 1 teaspoon salt, and ¼ teaspoon pepper.
Add 4 cups shredded sharp cheddar cheese and 2 cups shredded Gruyere cheese, stirring until melted and smooth.
Combine the cooked pasta with the cheese sauce and pour into a greased baking dish.
In a small bowl, mix ½ cup panko bread crumbs, 2 tablespoons melted butter, and ½ cup grated Parmesan cheese, then sprinkle evenly over the pasta.
Bake for 20–25 minutes until bubbly and golden brown on top.
Let rest for a few minutes and serve warm.
Video
Notes
I recommend shredding your own cheese for the best results instead of buying pre-shredded. You can use a 3 or 4 quart baking dish instead of the 9X13 baking dish. Refrigerate the leftovers in an airtight container for up to 5 days.