Melt the butter in a large pot over medium heat. Add the onions and celery. Cook for 3 minutes, stirring often.
Next, add the garlic, salt, and black pepper. Cook for 1-2 minutes while stirring.
Add the flour to the vegetables and stir well. Cook for 1 minute to get the raw taste out of the flour. Stir almost constantly.
Slowly add the chicken broth to the flour mixture while stirring with a wooden spoon or whisk. Move around the pot in small circles. Continue stirring until the flour mixture dissolves in the liquid.
Next, add the diced potatoes to the pot. Raise the heat to high and bring the liquid to a boil (will take about 4-5 minutes).
Lower the heat to medium-low, cover the pot, and cook for 20-25 minutes or until the potatoes are tender. They should be so tender that a fork or knife slides in and out easily without any resistance. Stir occasionally to make sure they are not sticking to the bottom of the pot.
Add the broccoli. Stir well and raise the heat to get the broth simmering again. Then lower it to medium-low, cover and cook for 4-5 minutes or until the broccoli reaches the desired tenderness. Keep the broth at a simmer. Raise or lower the heat as needed.
Also, keep in mind that the broccoli will continue to cook in the hot soup even if you take it off the heat.
Taste the potato broccoli soup and add salt if needed. As a reference we added ½ teaspoon to ours. If you are topping the soup with cheese and bacon keep it in mind before adding extra salt.
Serve in individual bowls and top with the shredded cheese, crumbled bacon, and chopped chives or green onions.