4 cups (1 quart) whole milk
8 tablespoons butter (1 stick)
1/2 cup all-purpose flour
2 teaspoons kosher salt, plus more as needed
1 pound elbow macaroni
8 ounces aged sharp cheddar cheese, shredded
3 ounces gouda, shredded
2/3 cup panko (optional)
Bring a large pot of salted water to a boil over high heat. Add the pasta and cook until it’s almost al dente (just on the edge of being underdone), then drain and rinse with cold water; set aside.
For the béchamel:
Heat the milk in a medium saucepan over medium-high heat until it just comes to a simmer, then turn off the heat and set aside. In a large, heavy-bottomed saucepan, melt the butter over medium heat. Add the flour and whisk constantly until the mixture turns light brown in color, about 3 minutes. Remove from the heat.
While whisking constantly, slowly add the hot milk to the flour mixture until evenly combined and smooth. Return the saucepan to medium-high heat and while whisking constantly, cook until the sauce thickens and coats the back of a spoon, about 2 to 3 minutes. Stir in 2 teaspoons of the salt, taste, and add additional salt as desired. Remove from heat and set aside. Preheat oven to 400 degrees.
Place the reserved saucepan of béchamel over medium heat and stir in both cheeses just until melted and smooth. Pour the sauce over cooked pasta and stir to combine. Transfer to a greased 5-quart baking dish, sprinkle with the panko, and bake until bubbling and brown on top, about 25 to 30 minutes.