Cook the pasta according to the instructions on the box, then drain; set aside.
In a large Dutch oven or saucepan, melt the butter over medium heat. Add the flour and whisk to combine, then cook for 1 to 2 minutes, whisking constantly, until the mixture is a light golden brown color and beginning to emit a nutty smell.
Reduce the heat to medium-low and slowly whisk in the milk until smooth. Simmer until slightly thickened, about 5 minutes, whisking occasionally.
Add the cheese, a handful at a time, whisking well after each addition and not adding more until the previous handful is fully melted and incorporated. Season to taste with salt and pepper.
Add the drained pasta to the cheese sauce and stir to combine, breaking up any clumps of macaroni. Serve immediately. Leftovers can be stored in an airtight container in the refrigerator for up to 3 days.
Notes
Pasta: Elbow macaroni is the classic mac and cheese shape, but any other short noodle will work like small shells, cavatappi, gemelli, campanelle, or radiatore.
Milk: I recommend using whole milk for a richer, thicker sauce, but 2% will also work.
Cheese: You can substitute other cheeses, such as white cheddar, Muenster, gruyere, fontina, gouda, colby, Monterey jack, mozzarella, etc. Also, be sure to buy your cheese in a block (and slices of American cheese) and shred it yourself. Pre-shredded cheese is coated to prevent it from clumping, but this also prevents it from melting well and can cause your macaroni and cheese to be grainy.
Add Meat – Chopped-up ham, bacon, turkey, or even cut-up pork chops!
Add Veggies – Onions and peppers for a southwestern flair; broccoli florets, cauliflower, mushrooms, and spinach are all great options, too.
Add Seasonings – While I keep the recipe pretty plain, feel free to add extra flavor by using garlic powder, mustard powder, paprika, cayenne pepper, hot sauce, Worcestershire sauce, etc.
Add a Topping – Crush up some Ritz crackers or toast some panko breadcrumbs in butter and sprinkle on top of each serving.
Make-Ahead – You can shred your cheese ahead of time and store it in an airtight container or ziploc bag in the refrigerator for up to 2 days before you prepare the mac and cheese.
Storage – Store the prepared mac and cheese in an airtight container in the refrigerator for up to 3 days.
Reheat – This reheats like a DREAM! Simply re-warm in the microwave or in a saucepan on the stove; while it stays nice and creamy, you can always add a splash of milk when reheating if you think it needs to smooth out a bit.
Freezing – This mac and cheese freezes beautifully. Store in an airtight ziploc bag (or airtight container) for up to 3 months. Thaw in the refrigerator overnight before reheating.