Preheat the Oven: Preheat oven to 350°F. Lightly grease a large baking sheet with butter or oil and set aside.
Cook the Pasta: Bring a large pot of salted water to a boil. Cook 1 pound dried elbow macaroni for 1 minute less than package directions for al dente. Drain and set aside.
Make the Roux: In a large skillet over medium-high heat, 6 tablespoons unsalted butter. Whisk in 1/2 cup all-purpose flour and cook for 1 minute until bubbling and slightly golden.
Add Milk and Cream: Reduce heat to medium-low. Slowly whisk in 3 cups whole milk and 1 cup heavy whipping cream. Cook for 3–4 minutes, whisking constantly, until the mixture thickens and coats the back of a spoon.
Add Cheese and Seasoning: Remove from heat. Stir in 1/2 teaspoon kosher salt, 1/4 teaspoon fresh ground black pepper, 12 ounces (3 cups) of cheddar, and 6 ounces (1½ cups) of Gruyere until melted and smooth.
Combine with Pasta: Add cooked pasta and stir to coat thoroughly. Taste for seasoning. If it needs more salt, add it now and stir well to combine.
Transfer and Bake: Spread mixture evenly on the prepared sheet pan. Top with the remaining 1 cup cheddar and ½ cup Gruyere. Bake for 10 minutes or until the cheese is bubbly and melted.
Optional Broil: For a crispier top, broil for 2–3 minutes, watching closely to prevent burning.
Notes
Make-Ahead Tips: Assemble the mac and cheese on the sheet pan, cover tightly with foil, and refrigerate up to 1 day ahead. Add 5–10 minutes to bake time if cold.Storage: Store leftovers in an airtight container in the refrigerator for up to 4 days.Freezing: Assemble but do not bake. Cover tightly and freeze for up to 3 months. Thaw overnight in the fridge before baking.Customization Ideas: Add in cooked bacon, grilled chicken, steamed broccoli, or sautéed onions for a hearty twist.