Feel free to change the cheeses, the only one you must keep, for consistency reasons, is the cream cheese.
12 ounces dried cavatappi (or any small pasta with ridges)
4 strips of bacon, diced
1/4 cup finely chopped yellow onion
1 Tbsp of unsalted butter
1 Tbsp of all-purpose flour
1 cup of milk (any fat content will do)
6 ounces sharp cheddar cheese, shredded (about 2 cups)
5 ounces sharp cheddar cheese, coarsely shredded (about 1 2/3 cups)
4 ounces cream cheese, cut into small cubes
3 ounces Parmesan cheese, freshly grated (about 2/3 cup)
1 ounce gruyere, grated (about 6 tablespoons)
Ground black pepper
1/2 cup panko bread crumbs
1. Preheat the oven to 400 degrees.
2. Cook the pasta according to the package directions until al dente. Drain but leave a little water on the pasta to keep it moist. Reserve another 1/2 cup of pasta water to thin the sauce. Return the pasta to the cooking pot and cover to keep warm.
3. In a medium saucepan, cook the bacon until crisp. Remove with a slotted spoon, leaving the bacon grease in the pot and saute the onion in the bacon grease for about 1 minute or until tender. Add the butter and flour and stir frequently for 2 minutes. Add the milk a 1/4 cup at a time, stir until fully incorporated and smooth, and bring to a simmer. Stir in the 2 cups of shredded cheddar, the cream cheese, Parmesan, and gruyere cheese and cook, stirring, until the cheeses melt and are fully incorporated into the cream. Let the sauce reach a simmer. You will have 2 1/2 to 3 cups of sauce.
4. Remove the sauce from the heat. It will be thick; thin it with up to 1/2 cup of the reserved pasta water and mix well. Season to taste with salt and pepper.
5. Ladle the sauce and bacon bits over the pasta and mix well with rubber spatula. Transfer to a deep 2-quart baking dish and spread the pasta and cheese evenly. Sprinkle the 1 2/3 cups of coarsely shredded cheddar cheese over the casserole and sprinkle with the bread crumbs. Bake for 20 to 25 minutes and serve immediately.