In a large saucepan, saute onion and garlic over medium high heat until tender (just a couple of minutes).
Add butter and flour, lower heat to medium, and cook until roux is bubbly and starting to brown (it will start to smell amazing!).
Pour roux into a large stock pot and add chicken broth, stirring the entire time you add the broth to prevent lumps.
Add chicken, broccoli, salt, garlic powder, black pepper, cayenne pepper, and hot sauce to stock pot and cook for about 35-40 minutes (less if using frozen broccoli).
Stir in cheese and milk until cheese is fully melted and serve.
Notes
A roux is a base for a lot of soups or casseroles that you make with fat and flour to create a thickening agent for your meal. While it does not contain complicated ingredients, however, the execution of the roux can be more complex because if you aren’t paying attention things might not turn out how you want. Bon appétit has a great informational article that is called “what is a roux and why do I keep messing mine up”. If you find that your recipes aren’t turning out the right way when you have a roux base, give it a read and get some ideas for the next time you need to make one. I always love to top off my soups with one or more fresh ingredients since you can add even more flavor and of course, it makes them look even more like they are from a restaurant. Some of our favorite soup toppings include the following: sour cream, cheddar cheese, chives, green onions, croutons, oyster crackers, tortilla strips, and avocado.