Melt butter in pot over medium-high heat. Add in onions and cook, stirring frequently until nearly soft, about 4 - 5 minutes.: The first thing you will notice is the butter foaming and releasing a warm, buttery scent, followed by the onion softening and smelling sweet. Keep the heat steady at medium high so the pieces become translucent without browning too quickly, stirring frequently so nothing sticks or scorches. You want the onions to give up moisture and become tender, which builds a sweet base for the soup, and the visual cue is a glossy, slightly translucent pan of small onion pieces. A common mistake is letting the butter brown, which will add a toasty flavor that can compete with the clean dairy notes, so watch the color closely and lower heat if you see edges turning deep brown. The sound at this stage is gentle sizzling and the kitchen will fill with a mellow, savory aroma that signals readiness.
Add in garlic and flour, and cook for about 1 minute, stirring constantly.: Right after adding the minced garlic , the air will light up with a fragrant, almost sweet pungency that peaks quickly, so stir constantly to prevent burning. When you add the flour , it will absorb the fat and form a paste like texture against the spoon; cook for about one minute to remove the raw flour taste while keeping the color pale, which keeps the soup smooth and prevents a raw flour graininess. Use a wooden spoon to scrape the bottom and incorporate any browned bits for flavor, and the scent will soften as the raw edge cooks off. Avoid letting the mixture darken, because a too dark roux will alter the intended mild, creamy profile.
While whisking, slowly pour in milk then chicken broth. Stir in broccoli.: As you slowly whisk in the warm milk , the roux will loosen and transform into a silky liquid, and pouring gradually prevents lumps from forming. Once the chicken broth joins the pot, the aroma becomes more savory and the mixture looks glossy and uniform. Add the chopped broccoli so it is submerged; the florets will lend color and texture. You will hear a soft hiss as the colder liquids hit the warm pan, but keep whisking until the base is smooth, which is essential for a creamy finish. A common trap is rushing and creating lumps, so patience while whisking pays off in a velvety mouthfeel.
Cook stirring constantly until mixture begins to thicken. Then reduce heat to low and allow to cook, stirring very frequently, until broccoli is tender, about 6 - 8 minutes.: As the pot simmers, the mixture will slowly gain body and become noticeably thicker, coating the spoon with a ribbon when ready. Reduce to low and keep stirring very frequently so the broccoli cooks evenly and the bottom does not catch. You will see the florets go from bright green and firm to a softer, deeper green and tender texture, and the kitchen will smell richer and dairy forward. The continued stirring helps the broccoli release starch and meld into the base, which improves mouthfeel. Avoid leaving it unattended, because a scorched bottom will ruin the clean, creamy flavor you are aiming for.
Remove from heat. Stir in heavy cream then stir in cheddar and parmesan cheese, mixing until melted.: Once you take the pot off the heat, the surface will settle and heat will even out so adding heavy cream does not cause separation. Stirring in the grated cheddar cheese and Parmesan cheese off direct heat prevents graininess and ensures a glossy, smooth melt as the residual warmth gently coaxes the cheeses to emulsify. You will watch the strands of cheese soften and disappear into the soup, and the scent becomes delectably nutty and tangy. If the cheese seems stringy or oily, it may have been overheated; removing the pot before adding cheese keeps texture silky. The sensation to aim for is a cohesive, creamy bowl with no clumps of unmelted cheese.
Season with salt and pepper to taste. Serve warm with more cheddar if desired.: Final seasoning should be gradual, tasting as you go to balance the mild milk and rich cheeses; add a pinch of salt and a twist of freshly ground black pepper until the flavors sing together. Serving warm lets the aromatic notes come forward and the texture remain luxuriously creamy. If you add extra grated cheddar cheese for topping, it will melt slightly into the surface, giving a pleasing contrast of texture. A common mistake is over salting early on, especially if your cheeses are quite salty, so always taste at the end and adjust sparingly.