Sauté the aromatics. Melt 3 Tbsp (45g) butter in a large Dutch oven or soup pot set over medium heat. Add 2 diced shallots and 1 diced carrot, then cook, stirring occasionally for 5 minutes. Add 2 cloves chopped garlic and ¼ tsp crushed red pepper flakes, season with ½ tsp kosher salt and a little black pepper, then cook 1 minute more.
Make the roux. Add 2 Tbsp flour, then whisk until it absorbs into the butter and turns light golden brown, about 1 minute.
Add liquid. Pour in 4 cups (1 liter) chicken broth, stir well, then raise the heat to medium-high. Bring the soup to a simmer, then cook for 10 minutes.
Add broccoli. Add 6 cups of broccoli florets and remaining ½ tsp kosher salt, then continue cooking until the broccoli is completely tender, about 20-25 minutes more.
Add cheese. Remove the soup from the heat, then stir in 4 oz (120g) shredded yellow Cheddar and 4 oz (120g) shredded white Cheddar cheeses until completely melted. It’s helpful to do this in batches and add the cheese slowly, stirring well between additions, so the cheese doesn’t clump.
Blend the soup. Use an immersion blender to purée the soup until it’s mostly smooth, but still has some broccoli chunks. I like it to have a bit of texture, but if you prefer it completely smooth, go for it. Stir in 1 cup (237ml) heavy cream. Taste and adjust the seasoning as needed. You’ll likely need a bit more salt, but because some brands of cheese are saltier than others, I find it’s best to wait until after the cheese has been added to adjust.
Garnish, then serve! Ladle the soup into bowls, then top each with thinly sliced scallions, freshly ground black pepper, and (if you like) a little extra shredded cheese. This is mostly for presentation, feel free to skip. Serve with crusty bread. Enjoy!