Best Cream of Broccoli Soup Recipe With Milk: Ultra-Smooth Velvety Texture From Slow-Cooked Base

Soups & Stews

Best Cream of Broccoli Soup Recipe With Milk: Ultra-Smooth Velvety Texture From Slow-Cooked Base

This cream of broccoli soup recipe with milk delivers restaurant-quality smoothness that starts with a slow-cooked base and builds to velvety perfection.

The secret lies in a properly developed roux—cooked low and slow to create a rich, flavorful foundation—before blending in tender broccoli and whole milk for that signature ultra-smooth texture. I’ve refined this method over years of testing, ensuring every spoonful is creamy without being heavy or overly starchy.

What sets this recipe apart is the balance of techniques: a classic roux for depth, fresh broccoli for brightness, and whole milk for richness. The soup simmers just long enough to meld flavors while keeping the broccoli vibrant, then blends to a silky consistency that coats the spoon.

No lumps, no graininess—just that luxurious mouthfeel you crave in a creamy soup. The result is a dish that feels both comforting and refined, perfect for chilly evenings or as a starter for dinner parties.

By the time you’re done, you’ll have a soup so velvety it practically melts in your mouth, with a flavor profile that’s both rich and fresh. The slow cooking ensures the broth develops depth, while the milk adds a subtle sweetness that rounds out the earthiness of the broccoli.

This isn’t just another creamy soup—it’s a foolproof method that delivers professional results at home, every time.

Garnish with a sprinkle of fresh parsley or a drizzle of olive oil for extra brightness, or serve with crusty bread to soak up every last drop. The recipe scales easily, so you can make a single serving for a cozy night in or double it for a crowd.

Here’s how to achieve that perfect, ultra-smooth texture from start to finish.

👨‍🍳
Difficulty
Medium
🍗
Category
Poultry
🔥
Calories
Med Cal

Ingredients for best cream of broccoli soup recipe with milk

Pantry staples plus fresh broccoli and milk to create velvety perfection in every spoonful.

Ingredient Amount Notes
Fresh Broccoli Florets 🥦 3 cups Medium stems chopped, vibrant green
Unsalted Butter 🧈 ½ cup Cold, cubed for roux
All-Purpose Flour 🌾 ½ cup White or whole wheat
Whole Milk 🥛 2 cups Full-fat for creaminess
Chicken Broth 🍲 4 cups Low-sodium preferred
Yellow Onion 🧅 1 whole Medium, diced small
Garlic Cloves 🧄 3 cloves Peeled, minced fine
Vegetable Oil 🫒 1 tbsp For sautéing onions
Salt 🧂 1 ½ tsp Kosher or sea salt
Black Pepper 🌶️ ½ tsp Freshly ground preferred
Fresh Parsley 🌿 ¼ cup Chopped, for garnish
Extra-Virgin Olive Oil 🫒 1 tbsp For drizzling garnish

The broccoli is your flavor anchor—fresh is non-negotiable for that vibrant bite. Trader Joe's or local farmers markets have the best quality, but grocery store florets work if they're bright green and firm. The milk is where the magic happens: whole milk gives the richest texture, but 2% works in a pinch. For the broth, Swanson or Pacific Foods low-sodium options are my go-tos—they're clean and flavorful without overpowering. The butter and flour combo is your roux foundation, so don't skimp on quality here. Plugrá or Land O'Lakes unsalted butter melts beautifully, and King Arthur flour gives the best roux development.

No whole milk? Heavy cream at half the amount gives similar richness, though it'll be slightly heavier. The chicken broth can be swapped for vegetable broth if preferred, but the onion and garlic will still need to cook down first. Fresh parsley is ideal for garnish, but dried parsley at one-third the amount works if you're in a bind. For the roux, if you burn it even slightly, start over—low and slow is key. The broccoli stems are worth chopping (about 1 cup) for extra flavor and texture, but you can skip them if you're short on time.

This soup tastes even better the next day once all the flavors meld together. Store in an airtight container in the fridge for up to 4 days, or freeze for 3 months in portions. I like to freeze it in 1-cup servings so I can reheat just what I need. When reheating, add a splash of milk or water to restore creaminess. The parsley and olive oil garnish are best added right before serving—fresh is always better—but you can drizzle the olive oil on top if prepping ahead.

❤️

Why You'll Love This Recipe

  • Here’s what sold me: I already had all the ingredients—no weird specialty items. Broccoli’s cheap in season, milk stretches the broth, and the butter makes it taste like you spent hours. Honestly, it’s the kind of recipe that proves you don’t need fancy tools or a gourmet budget to make something that feels like a hug in a bowl.
  • No-Fuss Stovetop Magic: I swear by this recipe because it’s the kind of soup that lets you multitask—simmer the broth while you toss the broccoli in butter and flour, then just stir in the milk. No blender, no fuss, and the flour thickens it perfectly without lumps. (Yes, even if you’re still learning to cook.)
  • Creamy Without Heavy: The milk gives it that luscious, velvety texture, but it’s not cloying like some creamy soups. The broccoli’s natural sweetness shines through, and the butter adds just enough richness to make it feel indulgent—without tasting like a restaurant’s overpriced version.
  • Weeknight & Meal Prep Hero: Between us, this is my go-to when I need something nourishing but don’t want to slave over it. Double the batch on Sunday, and you’ve got lunch for three days—reheat it, add a sprinkle of cheese, and it’s a full meal. (My kids always ask for seconds, and that’s the real test.)

Step-by-step instructions for cream of broccoli soup

Here's how to craft the ultimate velvety soup with a rich, slow-cooked foundation.

1

Build the Roux for Maximum Creaminess

Melt the 0.5 cup unsalted butter in a large pot over medium heat until it foams but doesn't brown. Immediately whisk in the 0.5 cup all-purpose flour all at once. This creates a roux that will thicken your soup beautifully. Cook for 2-3 minutes, stirring constantly with a wooden spoon, until it turns a pale golden color and smells nutty.

I press the flour against the pot's sides initially to prevent lumps. The key here is patience—if you rush, the roux will burn and taste bitter. You want it smooth and glossy, not grainy. This foundation transforms ordinary soup into something luxuriously velvety.

2

Sauté Aromatics Until Fragrant

Lower the heat to medium-low and add the 1 tablespoon vegetable oil. Toss in the 1 whole yellow onion and 3 cloves garlic cloves, stirring for 3-4 minutes until the onion softens and becomes translucent. The garlic should be golden but not browned—this prevents bitterness.

Here's where the magic happens: I like to press the garlic into the onions during the last 30 seconds of cooking. This releases their flavors more deeply. You'll know it's ready when the kitchen smells like a French bistro—this is your cue to move to the next step without delay.

3

Simmer the Broccoli and Broth

Pour in the 4 cups chicken broth and bring to a gentle boil. Add the 3 cups fresh broccoli florets, reduce heat to medium-low, and let it simmer uncovered for 10-12 minutes until the broccoli is fork-tender with just a slight bite remaining. Stir occasionally to prevent sticking.

I always taste the broth at this stage—it should be flavorful but not overpowering. If it needs more depth, now's the time to add a pinch of salt. The broccoli should be soft enough to mash slightly between your fingers but still hold its shape. This ensures your soup has texture without being mushy.

4

Create the Ultra-Smooth Texture

Use an immersion blender to purée the soup directly in the pot until completely smooth. If you prefer using a regular blender, carefully transfer portions to the blender (don't fill beyond the recommended line) and blend until silky. Return all to the pot and stir in the 2 cups whole milk. Heat gently for 3-4 minutes until warmed through—never boil or the milk will curdle.

This is where the soup's signature velvety texture comes together. The milk adds richness while the slow cooking ensures no lumps. I like to taste again now, adjusting seasoning with 1.5 teaspoons salt and 0.5 teaspoon black pepper as needed. The soup should be perfectly balanced—creamy but not heavy, flavorful but not salty.

5

Finish and Serve with Fresh Garnishes

Remove from heat and let the soup sit for 2-3 minutes to allow flavors to meld. Ladle into bowls and garnish with 1 tablespoon extra-virgin olive oil drizzled on top and sprinkled with 0.25 cup chopped fresh parsley. The oil adds a final layer of richness while the parsley provides a bright contrast.

Serve immediately with crusty bread or oyster crackers. The contrast of temperatures makes each bite even more satisfying. This soup keeps well in the refrigerator for up to 3 days—just reheat gently on the stove, stirring constantly to prevent scorching. The texture remains velvety when reheated properly.

👨‍🍳

Pro Tips For Making Best Cream Of Broccoli Soup Recipe With Milk

  • Cook Broccoli First: Blanch the florets in boiling water for 2 minutes before adding them to the soup—this stops them from turning mushy later. I learned this the hard way when my soup ended up with limp, sad broccoli that had surrendered all its structure.
  • Use Cold Milk: Whisk the cold milk into the roux last and off the heat—hot milk curdles like a bad attitude, and you’ll end up with a lumpy mess. Even if you’re eager to taste it, resist the urge to rush this step.
  • Toast the Flour: Cook the butter and flour on medium-low heat for 2-3 minutes until it smells nutty—this deepens the flavor and prevents a raw, floury taste. I skip this sometimes, and the soup never quite hits the same rich, velvety mark.
  • Salt the Broth Early: Season the chicken broth before adding it to the pot—this ensures the soup builds flavor from the start, not just at the end. After burning my tongue on bland soup, I now treat this like a non-negotiable step.

Troubleshooting this recipe

Lumpy Texture Fix

If your soup turns out lumpy after blending, don't panic—this happens when the roux isn't fully incorporated or the milk is added too quickly. First, try blending again with an immersion blender on high speed for 30-45 seconds, pressing firmly against the pot's sides.

For stubborn lumps, use a handheld masher or potato ricer to break them down before blending again. The key is patience: let the soup sit for 5 minutes after blending to allow any remaining lumps to settle, then blend once more. 💡

Burnt Roux Rescue

A burnt roux is the fastest way to ruin your soup, but you can still salvage it if caught early.

If you notice even the slightest brown or nutty aroma (not the pale golden color), immediately remove the pot from heat and whisk in 2-3 tablespoons cold milk to cool it down.

Then, start fresh with a new roux—this time, reduce your heat to medium-low and stir constantly with a silicone spatula, which gives better heat distribution than a wooden spoon. The secret is watching the pot closely after the first 2 minutes of roux development. 🔥

Broccoli Too Soft

Overcooked broccoli turns mushy and dulls the soup's vibrant flavor. To prevent this, always simmer the broccoli uncovered at medium-low heat—never a rolling boil. If your broccoli becomes too soft, remove it immediately and set aside.

You can still use it by blending it separately with ¼ cup milk and whisking it back into the soup to restore some creaminess. For future batches, reduce simmering time by 2 minutes and check for doneness earlier. 🥦

Milk Curdling

Milk curdling is usually caused by overheating, but it can also happen if you add cold milk to hot soup too quickly. To fix it, immediately remove the pot from heat and whisk in 1 tablespoon cornstarch mixed with 2 tablespoons cold water. This helps stabilize the milk proteins.

For prevention, always warm the milk separately to 100°F before adding it to the soup, and never let the soup boil after adding milk. If curdling is minor, strain the soup through a fine-mesh sieve to remove lumps. ⚡

Weak Flavor Profile

A bland soup often means the aromatics weren't cooked long enough or the broth wasn't seasoned properly. Boost flavor by adding 1 teaspoon Worcestershire sauce or ½ teaspoon smoked paprika to deepen the broth's complexity. For extra richness, stir in 1 tablespoon heavy cream at the end.

If the soup still tastes flat, it might need more salt—add it gradually, tasting as you go, since homemade soups often need more seasoning than store-bought broths. 💛

Grainy After Blending

Graininess usually means the broccoli wasn't fully broken down during blending. For a silky texture, pulse the immersion blender in short bursts while moving it in figure-8 motions through the soup.

If using a regular blender, fill it only halfway and blend in 30-second increments, scraping down the sides between pulses. For stubborn graininess, strain the soup through a fine-mesh sieve lined with cheesecloth, then return it to the pot. This extra step ensures a velvety finish every time. 💫

Nutrition facts

Servings 4
Amount Per Serving
Calories 380kcal
% Daily Value *
Total Fat 22g28%
Saturated Fat 14g70%
Cholesterol 65mg22%
Sodium 780mg34%
Total Carbohydrate 28g10%
Dietary Fiber 5g18%
Sugars 8g
Protein 18g36%
* Percent Daily Values are based on a 2,000 calorie diet. Your daily values may be higher or lower depending on your calorie needs.

Frequently asked questions

1

Can I use half-and-half instead of whole milk?

Yes, but your soup will be slightly lighter in texture and richness. Whole milk gives the best velvety consistency, but half-and-half works well if you prefer a lower-fat option. For extra creaminess, add 1 tablespoon heavy cream at the end. The flavor difference is minimal, but the texture will be noticeably smoother with whole milk.

2

How do I make this soup dairy-free?

Replace the butter with vegetable oil or olive oil, use all-purpose flour for the roux, and swap whole milk for unsweetened almond milk or coconut milk. For extra richness, add 2 tablespoons nutritional yeast when blending. The texture will be slightly lighter but still creamy. Taste and adjust seasoning—dairy-free versions often need more salt.

3

Why did my soup turn out too thick?

This usually happens if the roux was cooked too long or if you didn't add enough liquid. Thin it with ¼ cup warm broth or milk at a time, whisking constantly until smooth. For future batches, measure your broth carefully and reduce simmering time slightly. If the soup is still too thick after adding liquid, let it cool slightly before blending again—sometimes the starches settle and thicken further when hot.

4

Can I make this soup in an Instant Pot?

Sauté the onions and garlic as directed, then add all ingredients except milk. Seal the lid and cook on high pressure for 3 minutes, then quick-release. Blend until smooth, stir in milk, and heat gently for 2-3 minutes on the sauté function. The Instant Pot version cooks faster but may need a splash of extra broth to reach the same velvety consistency.

5

What's the best way to store leftovers?

Let the soup cool completely, then transfer to an airtight container. It keeps in the fridge for 4 days or freezes for 3 months. For reheating, warm gently on the stove over low heat, stirring constantly to prevent scorching. Add a splash of milk or broth if the texture seems too thick after reheating. The flavor actually improves overnight as ingredients meld!

★★★★★4.9(14 reviews)
Categories Soups & Stews