Add pasta to boiling water and cook according to the directions on the package, adding the broccoli during the last 3 minutes of cooking.
Reserve 1 cup of the pasta water and drain the rest.
In the meantime, cook the bacon in a large saucepan to a desired crispness; using a slotted spoon, remove the bacon and drain on paper towels. Set aside.
Add the diced onions to the pan and cook for 2 minutes; stir in garlic and continue to cook and stir for 1 more minute.
Whisk in the flour and mustard; cook for 2 minutes whisking constantly.
Pour pasta water and milk into the pan and continue to whisk until mixture is completely smooth and thickened; about 4 minutes.
Add the cheeses and continue to cook, whisking, until creamy; about 2 more minutes.
Season with chili powder and pepper.
Stir in the pasta and broccoli.
Remove from heat and taste for seasonings; adjust accordingly.