- 1 pound medium-sized pasta shells, cooked according to package directions
- 1/2 cup unsalted butter (1 stick)
- scant 1/2 cup all-purpose flour
- 4 cups whole milk
- 1 teaspoon salt, or to taste
- 1/2 teaspoon pepper, or to taste
- 1/4 teaspoon garlic powder
- 1/4 teaspoon dry ground mustard
- 1/4 teaspoon onion powder
- 3 cups (about 12 ounces) assorted cheese (colby jack, cheddar, sharp chedder), grated (grate your own because pre-grated cheese in bags doesn’t melt well)
- 1 cup (about 4 ounces) parmesan cheese, finely grated
Cook pasta according to package directions, drain, and set pasta.
To a large skillet, add the butter and heat over medium heat to melt.
Add the flour and whisk constantly until the mixture turns light brown and has bubbled for about 2 minutes. Cook long enough to cook off the raw flour taste, but not so long it gets overly browned.
Slowly add the milk, whisking constantly, making sure to smooth out any possible clumps that formed.
Add the salt, pepper, garlic powder, dry mustard, onion powder, and whisk to incorporate.
Add the cheddar, parmesan, and whisk until melted and smooth.
Add the pasta and stir to evenly coat. Depending on preference, if macaroni and cheese is on the thicker side, add a splash of water or milk to thin out to taste. I haven’t needed to do this, but it’s an option in case.
Serve immediately. Recipe is best warm and fresh, but will keep airtight in the fridge for up to 5 days or in the freezer for 4 months. Reheat very gently prior to serving leftovers so cheese doesn’t separate.