optional : If you prefer, you can substitute 4 to 5 cups chopped cooked fresh broccoli instead of frozen
In a large pot, saute bacon over medium heat until browned and crispy, about 5 minutes.
Remove with a slotted spoon to a plate lined with paper towels. Set aside.
Pour off all but 2 tbsp of the fat in the pot.
Add butter and heat until melted.
Add onion and sauté until softened, about 6 minutes.
Sprinkle with flour and sauté for 2 minutes. *opt: onion powder
Gradually whisk in milk – or milk & cream, broth, salt and cayenne or pepper flakes, sugar; bring to a simmer, stirring constantly. Simmer, stirring often, until smooth and creamy, about 3 minutes. Do not let boil.
Add potatoes, reduce heat and simmer, stirring often, until tender, about 20 minutes.
Add Cheddar & Parmesan cheese (opt) 1/2 cup at a time, stirring with a wooden spoon after each addition until cheese is melted. Do not let Boil!
Add broccoli and simmer, stirring, until heated through.
Taste and adjust seasoning with salt and cayenne, if necessary.
Ladle into heated bowls and garnish with reserved bacon.