This is currently my favorite recipe for homemade mac & cheese. It seems like it calls for a lot of milk, but the sauce really does thicken if you follow the directions.
3 Tbs. unsalted butter
1/4 cup finely chopped onion
1/3 cup all-purpose flour
coarse salt
4 cups whole milk (I use skim and it turns out fine...)
1/8 tsp. cayenne pepper
3/4 lbs. shell pasta (any shape you like, and I use a whole lbs.)
4 cups coarsely grated sharp cheddar (close to a lbs.)
1 tsp. Dijon mustard
1 tsp. Worcestershire sauce
1. In a medium saucepan, melt butter over medium heat; add onion and cook until softened, about 4 minutes. Add flour and 1/2 tsp salt; cook, stirring frequently , until mixture is pale golden, has a slightly nutty aroma, and is the texture of cooked oatmeal, about 5 minutes.
2. Whisking constantly, pour in 2 cups milk; add 2 more cups milk and cayenne and whisk until smooth. Cook mixture, stirring constantly along bottom of pan, until boiling, 6 to 7 minutes. Reduce heat to low. Simmer gently, stirring occasionally, until sauce thickens and does not feel grainy when a small amount is rubbed between two fingers, about 10 minutes.
3. Meanwhile, in a large pot of boiling slated water, cook pasta until al dente; drain throughly and return to pot. Remove sauce from heat and let cool 10 minutes. Quickly whisk in cheese, mustard, and Worcestershire. Pour cheese sauce over pasta and stir to coat.