Soups & Stews
This cream of broccoli soup recipe with milk delivers restaurant-quality silkiness in every spoonful—no heavy cream required. The secret lies in a proper roux foundation and whole milk for that velvety texture, transforming simple ingredients into a velvety comfort classic that warms you from the inside out.
I've perfected this method over years of testing, ensuring it's foolproof for weeknight dinners or holiday gatherings.
The magic happens in three key steps: building a rich roux to thicken the base, blending fresh broccoli with vegetable broth for vibrant flavor, and gradually incorporating milk to create that signature velvety consistency.
Unlike many recipes, this version avoids dairy substitutes while still delivering a luscious finish—whole milk provides the creaminess without overpowering the broccoli's natural sweetness. The result is a soup that's rich enough to satisfy but light enough for any meal.
What makes this recipe truly special is its balance of depth and simplicity. The broccoli's natural sweetness shines through while the milk adds a gentle richness that feels indulgent yet balanced.
Perfectly seasoned with garlic, onion, and a touch of nutmeg, it's a soup that tastes like comfort without being heavy. Each bite delivers that perfect marriage of creamy texture and fresh vegetable flavor.
Whether you're serving this to a family gathering or simply treating yourself to a cozy meal, this recipe delivers consistent, restaurant-quality results every time. The technique is straightforward, but the flavor is anything but basic—this is the kind of soup that becomes a household staple.
Let's get started on creating your velvety masterpiece.
Ingredients for best cream of broccoli soup recipe with milk
Creamy perfection starts with these 13 thoughtfully chosen ingredients—each playing a precise role in achieving that signature velvety texture without heavy cream.
| Ingredient | Amount | Notes |
|---|---|---|
| Fresh Broccoli Crowns 🥦 | 2 ½ lbs | Florets cut into even pieces |
| Vegetable Broth 💧 | 4 cups | Low-sodium preferred |
| Whole Milk 🥛 | 2 cups | Cold for optimal texture |
| Unsalted Butter 🧈 | 4 tbsp | European-style preferred |
| All-Purpose Flour 🌾 | ¼ cup | Sifted for smooth roux |
| Yellow Onion 🧅 | 1 whole | Diced into fine pieces |
| Garlic Cloves 🧄 | 4 cloves | Minced for aromatic depth |
| Ground Nutmeg 🌶️ | ¼ tsp | Freshly grated preferred |
| Diamond Crystal Kosher Salt 🧂 | 1 ½ tsp | Adjust to taste |
| Freshly Ground Black Pepper 🌶️ | ½ tsp | Cracked peppercorns preferred |
| Extra-Virgin Olive Oil 🫒 | 1 tbsp | For initial sautéing |
| Fresh Thyme Leaves 🌿 | ¼ tsp | Or 1/8 tsp dried thyme |
| Heavy Cream 🥛 | ½ cup | Optional for extra richness |
The foundation begins with European-style unsalted butter—its higher fat content creates a richer roux than regular butter. For the best quality, grab Plugrá or Kerrygold from specialty sections at Whole Foods or Eataly. The broccoli should be vibrant green with tight florets—Trader Joe's or local farmers markets typically carry the freshest cuts. Vegetable broth is non-negotiable here; even low-sodium options like Pacific Foods or Imagine work better than salt-heavy versions. For the milk, organic whole milk from Organic Valley delivers the creamiest results when cold.
No fresh thyme? Dried thyme at one-third the amount works in a pinch, though fresh imparts that bright herbal note. Substituting milk? Full-fat coconut milk adds richness but alters flavor slightly—use half-and-half for a closer match. The heavy cream is optional but recommended for that restaurant-quality finish; if omitting, increase milk to 2.5 cups instead. For the flour, King Arthur All-Purpose creates the smoothest roux, though regular all-purpose works fine. The nutmeg should be freshly grated—pre-ground loses potency quickly. And if you're avoiding gluten, swap the flour for 1/4 cup cornstarch for thickening.
This soup tastes even better the next day as flavors meld. Store in an airtight container in the fridge for up to 5 days, or freeze portions for 3 months—just thaw overnight in the fridge. For meal prep, I double the batch and freeze half immediately; reheating from frozen takes about 10 minutes on low heat with a splash of broth. The roux can be made ahead and refrigerated for 3 days in a sealed container, saving you time on busy days. Garnish with extra thyme or a drizzle of olive oil just before serving to preserve that restaurant-fresh appeal.
Why You'll Love This Recipe
- No Chopping Chaos: I swear by this recipe because you only need to cut the broccoli crowns—not the stems. Toss the florets in boiling water for 3 minutes, drain, and you’re done. That’s it. The stems go straight into the pot later for extra flavor, so no waste, no fuss.
- Velvet Smooth Magic: The secret’s in the roux—melt butter, whisk in flour, then slowly add milk while stirring like your life depends on it. That’s how you get that impossibly creamy texture without heavy cream. Honestly, it’s the kind of soup that makes you pause mid-sip and think, “Wait, how is this so good?”
- Weeknight to Dinner Party: Same recipe, different vibes. Serve it with crusty bread for a lazy Tuesday night, or add a sprinkle of crispy bacon and a swirl of cream cheese for a fancier gathering. The milk base keeps it rich but light enough to eat in summer or winter—no one will guess it’s just flour and butter doing all the heavy lifting.
- Leftovers That Still Shine: This soup actually improves the next day. The flavors meld, the creaminess deepens, and it reheats in minutes. I make a double batch on Sundays because it’s my go-to for lunch meetings or when I’m too tired to cook. Plus, the milk keeps it from tasting sad—just stir in a splash of water if it thickens too much.
Step-by-step instructions for cream of broccoli soup with milk
This method delivers restaurant-quality velvet texture through precise technique and ingredient timing.
Sauté Aromatics Until Fragrant
Heat the 1 tablespoon extra-virgin olive oil in a large pot over medium heat. Add the 1 whole yellow onion and cook for 5-6 minutes until softened and translucent. This foundational step builds flavor—don't rush it.
Add the 4 cloves garlic cloves and cook for 30 seconds until fragrant. Immediately stir in the 0.25 tsp fresh thyme leaves. The thyme releases its piney aroma quickly, so timing matters. Remove the pot from heat and set aside temporarily.
Create a Smooth Roux
Return the pot to medium heat and add the 4 tablespoons unsalted butter. Once melted, whisk in the 0.25 cup all-purpose flour all at once. Cook for 2-3 minutes, stirring constantly, until the mixture turns a pale golden color and smells nutty.
This roux is the secret to our velvety texture. If it darkens too quickly, reduce heat slightly. The goal is a smooth, lump-free base that will later blend seamlessly with the milk and broth.
Cook Broccoli Until Tender
Add the 2.5 lbs fresh broccoli crowns (cut into even florets) to the roux. Pour in the 4 cups vegetable broth and bring to a gentle boil. Reduce heat to medium-low and simmer for 10-12 minutes until the broccoli is fork-tender with just a slight bite remaining.
Overcooking here makes the soup mushy. Test doneness by piercing a floret—it should collapse easily but still have structure. This stage develops the broccoli's natural sweetness while maintaining its vibrant color.
Blend for Silky Smoothness
Using an immersion blender, carefully blend the soup directly in the pot until completely smooth. For a perfectly creamy texture, add the 2 cups whole milk and blend again. If you prefer a slightly chunkier texture, strain through a fine-mesh sieve after blending.
The milk incorporates smoothly at this stage, creating that signature velvety mouthfeel. If the soup seems too thick, add 2-3 tablespoons hot broth to reach your desired consistency. Season with 1.5 teaspoons kosher salt and 0.5 teaspoon black pepper.
Finish with Nutmeg and Cream
Return the soup to low heat and stir in the 0.25 teaspoon ground nutmeg and 0.5 cup heavy cream. Simmer gently for 3-4 minutes to meld flavors. The nutmeg adds warmth while the cream enhances richness without overpowering the broccoli's natural sweetness.
Taste and adjust seasoning—this is where the soup truly comes together. For extra depth, garnish with additional thyme leaves before serving. The finished soup should coat the back of a spoon with a luxurious, velvety texture that balances creamy richness with fresh broccoli flavor.
Pro Tips For Making Best Cream Of Broccoli Soup Recipe With Milk
- Blanch Broccoli First: Toss the florets in boiling water for 1-2 minutes before cooking—this softens them faster and keeps the soup from turning to mush. I used to skip this and ended up with a watery, sad purée every time.
- Whisk Milk Slowly: Temper the milk by adding it to the hot roux in a thin stream while stirring constantly. Dumping cold milk in all at once? You’ll end up with curdled soup—trust me, I’ve seen it.
- Toast the Flour: Cook the butter and flour over medium heat for 2-3 minutes until golden—this deepens the flavor and prevents that raw flour taste. Skip it, and your soup will taste like a bland paste.
- Strain for Smoothness: Run the finished soup through a fine-mesh sieve to remove any fibrous bits—it’s extra work, but the result is velvety, not gritty. (Yes, even if you’re tempted to skip it.)
Pro cooking tips for perfect results
Roux Perfection
Your roux is the foundation of velvety texture, so treat it like the star it is. Use European-style butter (like Plugrá) and cook it over medium heat until it reaches a pale golden color—about 2-3 minutes of constant stirring.
The moment it smells nutty is when you whisk in the flour. If it darkens too quickly, immediately reduce heat to medium-low to prevent burning. A properly made roux should coat the back of a spoon smoothly without lumps. 🌟
Milk Temperature Matters
Cold milk is your secret weapon for that restaurant-quality finish. Pour the 2 cups whole milk directly into the hot soup while blending—this creates tiny fat globules that give the soup its signature silkiness. If you're using dairy-free alternatives, let them warm slightly first to prevent curdling.
The milk should be added gradually to avoid curdling, especially if using plant-based options. For extra richness, I always add the milk after the initial blending stage.
Broccoli Doneness Test
Perfectly tender broccoli is the difference between a good soup and a great one. After 10-12 minutes of simmering, test a floret by piercing it with a fork—it should collapse easily but still have a slight resistance. Overcooked broccoli turns mushy and dulls the soup's vibrant green color.
For extra flavor, I like to add a splash of the vegetable broth to the pot before blending to ensure all the broccoli's essence is incorporated. This step is where the soup's natural sweetness really shines through.
Nutmeg Timing
Add the 0.25 teaspoon ground nutmeg in the final 3-4 minutes of cooking to let its warm, earthy flavor meld with the other ingredients. Freshly grated nutmeg makes a world of difference—pre-ground loses potency quickly. If you're using a nutmeg grater, a few turns is all you need.
The nutmeg should be just a subtle background note, not overpowering the creamy texture. For a little extra depth, I sometimes add a pinch of white pepper at this stage as well.
Blending Techniques
An immersion blender is your best friend for this recipe, but if you're using a countertop blender, work in batches to avoid splattering. Always blend the soup directly in the pot to preserve all the flavor and texture.
If you prefer a slightly chunkier texture, strain the soup through a fine-mesh sieve after blending. For a smoother finish, add the milk and blend again until completely silky. The key is to blend just until smooth—over-blending can make the soup taste flat and lose its natural flavors. 💫
Final Seasoning Adjustments
Taste your soup before serving and adjust the seasoning as needed. The 1.5 teaspoons kosher salt and 0.5 teaspoon black pepper should be a good starting point, but don't be afraid to add more if needed.
The heavy cream adds richness, but if you're avoiding it, increase the milk to 2.5 cups instead. A final touch of fresh thyme or a drizzle of olive oil just before serving elevates the dish and makes it look as good as it tastes.
The goal is a soup that's perfectly balanced—creamy, flavorful, and just the right amount of rich.
Nutrition facts
Frequently asked questions
Can I substitute milk with a dairy-free alternative?
Yes, but with adjustments! Use full-fat coconut milk or cashew cream for richness, but expect a slightly different flavor profile. Warm the alternative slightly before adding to prevent curdling, and increase to 2.5 cups if omitting heavy cream. For the closest texture, blend the dairy-free milk in gradually while blending.
Why does my soup turn out grainy instead of creamy?
Graininess usually means incomplete blending or improper roux development. For silky texture, blend until completely smooth (no visible flecks) and ensure your roux reaches a pale golden color. If using an immersion blender, work in small batches if needed. For extra smoothness, strain through a fine-mesh sieve after blending. The milk should be added after initial blending, not before.
Can I make this soup ahead of time?
This soup tastes even better the next day as flavors meld. Store in an airtight container in the fridge for up to 5 days, or freeze portions for 3 months. Thaw overnight in the fridge and reheat gently on low heat with a splash of broth. The roux can be made ahead and refrigerated for 3 days in a sealed container for convenient prep.
What's the difference between whole milk and heavy cream in this recipe?
Whole milk provides the creamy base and natural sweetness, while heavy cream adds luxurious richness without overpowering the broccoli. The milk creates the signature velvety texture, while the cream enhances depth. For a lighter version, omit the cream and increase milk to 2.5 cups. The recipe balances both for that perfect restaurant-quality mouthfeel.
How do I adjust the seasoning for different dietary needs?
For low-sodium, use no-salt-added broth and reduce kosher salt to 0.5 teaspoon. For dairy-free, replace milk with unsweetened almond milk (though texture will differ). For gluten-free, substitute 1/4 cup cornstarch** for the flour in the roux. Always taste before serving and adjust gradually—this soup's flavor builds beautifully with time.
