Preheat the oven to 400 degrees. Tightly wrap the garlic cloves in aluminium foil and roast for 50 minutes or until softened. On a baking sheet, place a piece of parchment paper and toss the broccoli with the olive oil and melted butter and sprinkle with salt and pepper. Roast for 20 minutes or until tender.
While the broccoli and garlic are cooking, heat a soup pot over medium high heat and add the remaining 2 tablespoons of olive oil. Toss in the chopped onion, celery and carrots and sprinkle with salt and pepper and stir well to combine. Stir frequently and cook for 5 minutes or until softened. Add the red pepper flakes and stir again, cooking a few more minutes. Pour in 3 cups of water and let cook 10-15 minutes so the water becomes flavored.
When the broccoli is done, remove it from the oven and let it rest. When the garlic is done, squeeze it out of the skins and add it and the broccoli to a blender. You may have to do this in two batches. Add enough broth to cover and blend until pureed. (If you cannot put all of the veggie or chicken broth in the blender, add the remaining amount directly to the soup pot.)
Pour the broccoli, garlic and broth puree into the pot with the onions, carrot and celery and cook over medium heat for 10 minutes.
Using an immersion blender, puree the soup well so there are no chunks--though if a few remain, it's fine. If using, add the cheese, stirring well to allow the cheese to melt. Increase the heat to medium-high and bring to a simmer. Taste the soup and adjust seasoning, if needed.
Serve in bowls, season with a finishing salt, such as Maldon, and pepper and, if desired, a squeeze of lemon juice.