Bacon is an irresistible addition to gooey mac & cheese; leave it out for a vegetarian version.
Bring a large pot of salted water to a boil and cook pasta according to the package directions. Drain and return to the pot. Set aside.
Meanwhile, in a heavy skillet or medium saucepan, cook the bacon and onions until the bacon is crisp and the onions are starting to turn golden. Drain any excess fat and add the mixture to the pasta.
Return the empty pan to the heat and add the butter. When the foam subsides, add the flour and stir, cooking, for a minute.
Gradually whisk in about a cup of the milk, whisk until smooth, and then add the remaining milk.
Cook over medium heat, whisking often, until the mixture comes to a boil; let it simmer gently for a minute or two, stirring constantly.
Stir in the cheese, remove from the heat and stir until the cheese melts and the sauce is smooth. Season with salt and pepper.
Add the cheese sauce to the pasta and bacon and stir everything together. Pour into a baking dish that will accommodate it.
Preheat oven to 350°F. In the bowl of a food processor, pulse the bread to crumbs; add the Parmesan and butter and pulse to blend until well blended and moist.
Scatter over the mac & cheese and bake for 30 minutes, or until bubbly around the edges and golden on top.