Cook the Pasta: Bring a large pot of salted water to a boil. Add the elbow macaroni and cook until al dente according to package instructions. Drain and set aside.
Prepare the Cheese Sauce: In a medium saucepan over medium heat, melt the butter. Once melted, whisk in the flour and cook for about 1-2 minutes until the mixture is golden and bubbly, forming a roux.
Add Milk: Gradually whisk in the whole milk, ensuring no lumps form. Continue to cook, stirring constantly, until the mixture thickens, approximately 5 minutes.
Incorporate Cheeses: Remove the saucepan from heat and stir in the shredded cheddar and Gruyère cheeses until fully melted and the sauce is smooth. Season with salt, black pepper, and paprika.
Combine Pasta and Sauce: Add the cooked macaroni to the cheese sauce, stirring until the pasta is evenly coated.
Bake (Optional): Preheat the oven to 350°F (175°C). Transfer the macaroni and cheese mixture to a greased baking dish. If desired, sprinkle breadcrumbs evenly over the top for a crunchy topping. Bake for 20-25 minutes until the top is golden brown and the sauce is bubbling.
Garnish and Serve: Remove from the oven and let it cool slightly. Garnish with freshly chopped parsley before serving.