01 - Melt the butter in a large pot over medium heat. Add the onion, garlic, carrot, and celery; sauté for 5 minutes until softened and fragrant.
02 - Sprinkle the flour over the vegetables and cook, stirring constantly, for 1 minute to form a roux.
03 - Gradually pour in the vegetable broth while stirring continuously to prevent lumps from forming.
04 - Add broccoli florets and bring the mixture to a boil. Reduce heat to low, cover, and simmer for 10 to 12 minutes until broccoli is tender.
05 - Use an immersion blender to puree the soup until smooth, or blend in batches in a countertop blender, then return to the pot.
06 - Stir in the whole milk, heavy cream, cheddar, and Parmesan cheese. Warm gently, stirring until cheese melts and soup turns creamy.
07 - Adjust seasoning with salt, pepper, and nutmeg to taste. Serve hot, optionally garnished with extra cheese or croutons.