In a Dutch oven, melt butter over medium heat. Add onion and carrots and cook until soft, about 5 minutes.: The kitchen will start to smell sweet and toasty as the butter melts and the onion and carrots begin to soften; you should hear a gentle sizzle and see the vegetables turn translucent at the edges, brown spots are not necessary. This stage builds flavor through gentle caramelization, which deepens the soup's base. Stir every minute to prevent the onion from burning, and watch for a softening that signals readiness. A common mistake is rushing with too high heat which can scorch the vegetables, resulting in a bitter note. Keep the heat moderate and use the smell and texture as your cue to move on.
Sprinkle flour over onion/carrot mixture. Cook and stir for 2 minutes.: At this point you'll add the flour to form a roux that will thicken the soup; it should coat the vegetables and start to smell faintly nutty as it cooks. The visual cue is a dry looking mixture that becomes slightly glossy, and you will want to stir continuously so the flour loses its raw taste. This technique matters because an undercooked roux tastes pasty, while an overcooked roux becomes too dark and changes the soup's color and flavor. Avoid clumping by stirring thoroughly and loosening any bits from the pan bottom with your spoon.
Gradually add chicken broth, whisking constantly. Add half-and-half. Bring to a simmer.: When you add the broth , pour slowly while whisking to dissolve the roux into a smooth liquid; you'll notice the mixture transform from pasty to silky. After the broth is incorporated, stir in the half and half , which will make the liquid glossy and luxurious. Bring the pot up to a gentle simmer where small bubbles form around the edges, not a rolling boil that could separate the dairy. A common issue is adding cold dairy to a very hot base which can cause curdling; temper the liquid by stirring constantly and keeping heat controlled.
Add broccoli and stir into mixture. Simmer for 20 minutes, stirring occasionally. If desired, use a potato masher to break broccoli up some.: As you add the chopped broccoli , the pot will brighten visually with vibrant green flecks, and a fresh vegetal aroma will rise. Simmering softens the florets so they meld into the creamy base; you want them tender but still holding some shape if you prefer texture. Using a potato masher on part of the pot will release small pieces that thicken the soup naturally and give a pleasing mouthfeel. Avoid overcooking, which leads to dull color and mushy texture; test a floret for tenderness mid way through the simmer to time it right.
Turn heat to low. Add shredded cheeses. Stir until melted. Add cream cheese in small chunks and whisk well to combine.: Lowering the heat is crucial before introducing the shredded Fontina and white Cheddar cheese , because lower temperatures help the cheeses melt smoothly into a glossy emulsion rather than separating. You'll see ribbons of melted cheese swirl into the soup, and the aroma becomes richer and more savory. Adding the softened cream cheese in small pieces and whisking ensures a silky integration that prevents lumps. A frequent error is adding cheese on high heat, which can make the fats separate and create an oily puddle; take your time and stir until everything is uniformly melted.
Stir in salt, peppers, and garlic powder.: After the cheeses are incorporated, seasoning brings the flavors into balance; the salt enhances sweetness, while black pepper , garlic powder , and red pepper flakes add layers of warmth and bite. Taste as you go and adjust carefully because the cheeses already contain salt. I like to add a little at a time and taste between additions. Over seasoning is common, so err on the conservative side and remember you can always add more.
Let simmer for a few minutes and serve.: Allowing the soup to sit on low heat for a short time lets the flavors settle and the texture unify into a cohesive bowl; you will notice the surface become glossy and the aroma settle into a comforting, savory profile. Listen for a soft, steady simmer and watch for a gentle rise of steam, which signals the soup is ready to serve. Avoid prolonged boiling which can break the emulsion and dull the bright color of the broccoli . Serve hot, and if reheating later, warm slowly to preserve creaminess.