Cook the vegetables (mirepoix). Chop and prepare your vegetables. Add the olive oil and butter to a large pot or Dutch oven set over medium heat. Add the onion and cook, stirring often, for 4-5 minutes or until the onions turn translucent. Add the carrots and celery to the onions and mix well to combine. Continue to cook over medium heat for 10-15 minutes, stirring often. In the last two minutes stir in the minced garlic and sprinkle with salt and pepper. Mix well to combine.
Add the Broccoli. Add the broccoli florets to the cooked vegetables. Mix well to combine and cook until broccoli is softened (if necessary, add 2-3 tablespoons of water to the pot to prevent the vegetables from burning).
(Optional) if you prefer a chunkier soup, remove approximately 2-3 cups of cooked and softened vegetables, dice (optional) and set aside.
Simmer. Add the broth (chicken, vegetable, or bone broth) and season with salt, pepper, and thyme. Mix well and bring to a simmer. Reduce heat to low, cover, and simmer for 15-20 minutes.
Make the flour mixture. As the soup simmers whisk together the all-purpose flour with 2 cups of milk and shred the cheese.
Temper the flour mixture. To prevent the milk from curdling, slowly whisk boiling broth from your soup pot (1 tablespoon at a time) with your flour mixture. Once warm, slowly whisk into your soup and remove from heat.
Blend. Use an immersion (hand) blender, standing blender, or food processor to blend the soup. For a smooth soup, you may blend the whole thing, or, for extra chunky soup, simply blend half the pot.
Add the cheese and serve. Stir in the cheese, chopped vegetables (optional), and season with additional salt and pepper, to taste. Serve garnished with additional shredded cheese and cooked broccoli florets, if desired.