Warm the pot: Heat butter or oil over medium heat in a large pot. Add the diced onion and cook until soft and translucent, about 4–5 minutes. Add garlic and cook a minute more until fragrant. This is where the flavor foundation happens — don’t rush it.
Add root veg: Toss in the carrots and potatoes. Sauté for 4–5 minutes so they get a little color and start to soften.
Make the roux: Sprinkle the flour over the veggies and stir so everything is coated. Cook for a minute to cook off the raw flour taste. This step will thicken the soup nicely. (If using cornstarch, whisk it into a small amount of cold milk or broth first.)
Add liquid & herbs: Slowly whisk in the vegetable broth, stirring to keep lumps away. Add thyme, rosemary, bay leaf (if using), salt, and pepper. Bring to a gentle simmer.
Simmer: Cook about 12–15 minutes until potatoes are tender.
Add quick-cook veg: Stir in broccoli, peas, and corn. Simmer another 5–7 minutes — you want the broccoli bright green, not mush.
Finish with cream: Lower the heat and stir in the milk and cream. Warm gently until the soup is silky and slightly thickened. Taste and adjust salt/pepper. Remove the bay leaf.
Serve: Ladle into bowls, sprinkle with fresh parsley, and hand everyone a slice of crusty bread or a grilled cheese for dunking.
Optional texture trick: Use an immersion blender to purée about one-third of the soup right in the pot. It makes the broth thicker and creamier without losing all of the veggie texture.