Prepare the broccoli:
Wash and chop the broccoli into small florets. For added texture, dice the tender stalks as well.
Sauté the aromatics:
In a large pot or Dutch oven, melt the butter over medium heat. Add the diced onion and sauté until softened, about 3–4 minutes. Stir in the garlic and cook for 1 minute until fragrant.
Make the roux:
Sprinkle the flour over the onion and garlic mixture. Whisk continuously for 1–2 minutes to cook out the raw flour taste.
Add the liquid:
Slowly pour in the chicken or vegetable broth while whisking to avoid lumps. Bring the mixture to a simmer.
Cook the broccoli:
Add the broccoli to the pot. Cover and cook for 10–12 minutes, or until the broccoli is tender.
Blend the soup:
Use an immersion blender to puree the soup to your desired consistency. For a chunkier texture, blend only part of the soup, leaving some broccoli pieces intact.
Add milk and cheese:
Stir in the milk or heavy cream. Gradually add the shredded cheese, one handful at a time, stirring until melted and smooth. Season with nutmeg, salt, and pepper to taste.
Serve:
Ladle the soup into bowls and garnish with extra cheese, croutons, or fresh parsley. Serve hot with crusty bread or crackers.