Cook ½ cup chopped onion, ½ cup chopped carrot and ⅓ cup chopped celery in 2 tablespoons unsalted butter for 5 minutes over low heat. Add 1 garlic clove, minced and cook for 1 more minute being careful not to burn it.
Sprinkle 2 tablespoons all-purpose flour, mix and cook for another 2 minutes, stirring constantly.
Pour in a little broth and mix, breaking up all the lumps of flour. After a minute, pour in the remaining broth and ¼ cup heavy or whipping cream in a stream, mixing continuously.
Add ⅓ teaspoon salt and ⅓ teaspoon pepper, and cook the soup for 2 minutes.
Add 3 cups broccoli florets and 3 tablespoons grated Parmesan (reserve a little for serving), stir and cook for 10 minutes. Transfer a portion of the broccoli to a bowl with a slotted spoon or fork and set aside to use as garnish.
Puree the soup with an immersion blender, then transfer the broccoli to the pot.
Add ¾ cup of the shredded cheddar, reserving some for serving. Cook over low heat for 2 more minutes, whisking constantly.
Serve with the reserved broccoli pieces and shredded cheddar. Sprinkle fresh herbs and a drizzle of cream also as garnish.