Prepare the Vegetables: In a medium-sized pot, melt the butter over medium heat. Add the finely chopped onion, diced carrots, and celery. Sauté the vegetables for about 5 minutes, or until they soften and release their aromatic flavors. Stir in the broccoli florets and cook for an additional 2 minutes, allowing them to absorb the savory base.
Make the Roux: Push the sautéed vegetables to the edges of the pot, creating a space in the center. Melt the remaining butter in the middle, then sprinkle in the flour. Stir continuously for 1 minute to create a roux, which will act as a thickening agent for the soup.
Add Broth: Gradually pour in the vegetable or chicken broth, stirring constantly to ensure the roux dissolves evenly without forming lumps. Increase the heat slightly and bring the soup to a gentle boil, allowing it to thicken.
Add Milk: Reduce the heat to low and slowly pour in the whole milk or heavy cream. Stir thoroughly to achieve a smooth, creamy consistency.
Cook the Broccoli: Let the soup simmer gently for 10–15 minutes, giving the broccoli time to soften and the flavors to meld beautifully. Stir occasionally to prevent sticking and ensure even cooking.
Add Cheese: Once the broccoli is tender, sprinkle in the shredded cheddar cheese. Stir until the cheese has melted completely, creating a rich and velvety soup. Adjust the seasoning with salt and pepper according to your taste.
Serve: Ladle the soup into bowls and, if desired, garnish with freshly grated Parmesan for an extra layer of flavor. Serve the soup piping hot with crusty bread or your favorite crackers for a comforting and satisfying meal.