Preheat your oven to 350°F (175°C). Lightly grease a large 3 or 4-quart baking dish and set it aside. In a large bowl, combine all the shredded cheeses—the sharp cheddar and Gruyere—so they're ready to use for both the cheese sauce and topping later.
Cook the elbow macaroni one minute less than al dente, following the package instructions. Once cooked, drain the pasta and transfer it to a large bowl. Drizzle the warm pasta with the olive oil and stir to coat it evenly. Allow the pasta to cool slightly while you prepare the cheese sauce. I like to undercook the pasta just a bit because it continues to cook in the oven and absorbs the cheesy goodness.
Melt the unsalted butter in a deep saucepan, Dutch oven, or stock pot over medium heat. Whisk in the flour and continue whisking for about 1 minute until the mixture is bubbly and just turning golden. Gradually whisk in the whole milk and heavy whipping cream, stirring until the mixture is smooth. Keep whisking until bubbles form on the surface, then continue cooking and whisking for another 2 minutes. Season with salt and black pepper to taste. Next, add two cups of the shredded cheese mixture and whisk until smooth. Add another two cups of shredded cheese and whisk again until the sauce is creamy and thick.
Add the cooled, oiled macaroni from Step 2 to the pot with the cheese sauce from Step 3. Stir everything together until the pasta is fully coated in the thick, creamy sauce and well combined.
Pour half of the mac and cheese mixture into your prepared baking dish. Sprinkle half of the remaining shredded cheese mixture (from Step 1) over the layer. Then, add the rest of the mac and cheese mixture on top. Finish by topping with the final portion of remaining cheese. This layering adds extra gooeyness throughout the bake.
In a small bowl, combine the panko breadcrumbs, shredded Parmesan cheese, melted butter, and smoked or regular paprika. Mix until the crumbs are evenly coated. Sprinkle this mixture evenly over the mac and cheese casserole, covering it completely. This step makes the topping extra crunchy—I love the flavor that smoked paprika adds for a subtle smoky note.
Bake the assembled mac and cheese in the preheated oven for about 30 minutes, or until the top is bubbly and golden brown. Serve immediately and enjoy your decadent homemade mac and cheese!