Broccoli Cheese Soup Recipe

Creamy, filling, and packed with layered broccoli flavor.


Serious Eats / J. Kenji López-Alt

Why This Recipe Works

  • Charring broccoli florets and simmering the stems builds in layers of broccoli flavor.
  • Adding a potato to the simmering soup provides a natural thickener that helps the cheese emulsify and gives the soup a creamy texture.

In the world of cheaty foods, broccoli cheese soup has always seemed like one of the cheatiest. Yes, "broccoli" is the first word in the name, and "soup" sure sounds healthy, but let's get real: When you go up to the counter and tell the order-taker, "I'd like a bowl of broccoli cheese soup, please," what you're really saying is "Thank you for making it easy and acceptable to drink a bowl of nacho cheese sauce for lunch."

There's nothing wrong with owning it. Cheese is delicious, and not every single lunch has to be virtuous. Still, I sometimes wish that the broccoli part of the whole thing was taken a little more seriously, if only for the purely selfish reason that I love broccoli.

My goal here was to create a recipe for broccoli cheese soup that was as comforting as the ultra-cheesy kind you typically find, but simultaneously really tasted like broccoli.

The Best Way to Build Layers of Broccoli Flavor

For my first test, I used a very common technique: Sauté onions and carrots in butter until softened but not browned, since browned onions and carrots become distractingly sweet. Add some chicken stock to the pot—water also works fine, though chicken stock lends more flavor—along with some dairy. (I tested heavy cream, regular milk, and skim milk and found that straight-up whole milk was best; it provided creaminess without an overwhelming amount of extra dairy fat, which can dull flavors.) Thicken with starch. Simmer. Blend in cheese. Add broccoli and cook just until tender.

With this approach, I wound up with a soup that tasted like what it was: cheese soup, with bits of broccoli floating in it.

Next, I went the opposite route, testing a few recipes that called for simmering the broccoli for a long, long time (these tended to be slow-cooker recipes). These soups ended up tasting very much like the chafing-dish version you're probably familiar with if you ever eat lunch at Panera: broccoli flavor built right into the soup, but no brightness or freshness to speak of.

This wasn't surprising. Anybody who has made my pasta with braised broccoli, or the braised broccoli rabe recipe from my book, knows that the flavor of broccoli will change dramatically based on how long it's cooked. Cook it for a short period of time, and it stays grassy and bright. Cook it for a very long period, and it turns rich and savory.*

*Interestingly, a recent recipe from America's Test Kitchen for cauliflower soup found that the same holds true for cauliflower. I'm guessing it's a common trait in all brassicas.

Each style has its appeal, but what I really wanted was both: deep broccoli flavor worked into the soup, along with pieces of bright, fresh, grassy broccoli. So how do we get the best of both worlds? Simple: Just add the broccoli in two different stages.

I started by separating heads of broccoli into stems and florets, cutting the florets into bite-size pieces. Next, I chopped up the stems and sautéed them in butter, along with onion and a carrot. (I also tried leek and celery, but found them unnecessary.) I added some sliced garlic to the blend as well, sautéing it just until aromatic.

After adding my stock and dairy and giving the soup base a good long simmer to fully tenderize the broccoli stems, I puréed the whole thing using an immersion blender, adding grated cheddar cheese to the pot as I blended. The texture of the soup wasn't exactly where I wanted it to be (a little grainy), but I figured I could focus more on that after I'd worked out the broccoli flavor issue.

The resulting soup was delicious, with nicely layered broccoli flavor, but it could have been even better. I'd already enhanced the flavor of the vegetable by playing with the variable of time—what if I were to also play with the variable of heat? Just like Brussels sprouts, broccoli gets an intensely sweet, nutty flavor when subjected to very high heat. There had to be a good way to take advantage of that.

How could I incorporate that flavor into the soup? My first thought was to roast the broccoli stems, as Daniel does for his roasted-broccoli soup, but roasting and then simmering seemed a little fussy for a single recipe. Instead, I decided to do it all on the stovetop by searing the broccoli florets in a bit of oil right at the start, then transferring them to a baking sheet to cool while I constructed the rest of the soup base.

Doing this allowed me to add those browned florets back to the soup before serving, pulsing them with the immersion blender just enough to break them apart and spread some of that sweet, nutty flavor around. The resulting soup had great, multilayered broccoli flavor. Now it was time to turn my attention to the other important element: the cheese.

Chasing Maximum Cheesiness: For a Creamy and Emulsified Soup, Add a Potato

Cheddar cheese cut into cubes and shredded with a box grater.

Serious Eats / J. Kenji López-Alt

I went with a combination of grated sharp cheddar and chunks of American cheese that I got from the deli case. (Check out this article on American cheese for more details about the difference between the deli and the presliced stuff.) This combo provides a nice mix of sharp, "flavorful" cheese and the more comforting, dairy-forward character of mild American. (There's nothing stopping you from using all cheddar, all American, or any other young, moist cheese, of course.)

It's easy to think "Just add more cheese!" if you want a cheese soup to be cheesier, but anyone who's ever tried dumping grated cheese into a pot of simmering liquid knows that it doesn't quite work like this. Your cheese ends up clumping in a solid mass, with a slick of fat breaking out and floating on the surface. Why does this happen?

Let's take a quick look at what cheese is made of:

  • Water is present to varying degrees. Young cheeses, like Jack, young cheddars, or mozzarella, have a relatively high water content—up to 80%. The longer a cheese is aged, the more moisture it loses, and the harder it becomes. Hard cheeses, like Parmigiano-Reggiano or Pecorino Romano, may be as little as 30% water after several years of aging.
  • Milk fat, in the form of microscopic globules kept suspended in a tight matrix of protein micelles (more on those in a second). Under about 90°F, this fat is solid. Because of this, and because of their suspension, the globules don't come into contact with each other to form larger globules, so cheeses stay creamy or crumbly instead of greasy.
  • Protein micelles are spherical bundles of milk proteins. Individual milk proteins (the main ones are four similar molecules called caseins) resemble little tadpoles (or sperm, if you will), with hydrophobic (water-avoiding) heads and hydrophilic (water-seeking) tails. These proteins come together headfirst in bundles of several thousand, protecting their hydrophobic heads and exposing their hydrophilic tails. These micelles link together into long chains, forming a matrix that gives the cheese structure.
  • Salt and other flavorings make up the rest of the cheese. Salt can have a profound effect on the texture of the cheese—saltier cheeses have had more moisture drawn out of the curd before being pressed, so they tend to be drier and firmer. Other flavorful compounds present in cheese are mostly intentional by-products of bacteria and aging.

Normally, these four players work together in relative harmony. But heat messes the whole thing up. Here's what Harold McGee has to say in On Food and Cooking:

"First, at around 90°F, the milk fat melts, which makes the cheese more supple, and often brings little beads of melted fat to the surface. Then at higher temperatures—around...150°F/65°C for Cheddar...enough of the bonds holding the casein proteins together are broken that the protein matrix collapses."

The key to making a cheese soup that stays creamy and emulsified is to find a way to ensure that the fat globules don't band together and that the proteins don't tighten up too much. Fortunately, after developing my recipes for cheese sauce and ultra-gooey stovetop mac and cheese, I have a bit of experience in this field.

A can of evaporated milk on the cutting board.

Serious Eats / J. Kenji López-Alt

The common solution is to use a flour-based roux. Flour can thicken up the water phase of the soup, which in turn makes it difficult for fat globules to coalesce. Just like in a creamy Mornay sauce, the cheese can't separate. But starch-thickened sauces tend to have a particular texture that I find off-putting. Rather than glossy and smooth, like melted cheese, they end up more pasty and dull. I wanted to avoid using a flour-based roux in my soup.

First, I tried substituting evaporated milk for the whole milk I was using in the recipe. Evaporated milk has a higher concentration of loose milk proteins, which can help to keep the mixture emulsified. The downside is that evaporated milk tastes like cooked milk. This flavor isn't so distracting in a cheese sauce or mac and cheese, both of which have a very high percentage of cheese, but it didn't work for the soup.

Next, I turned to other thickeners and emulsifiers: cornstarch, sodium citrate, and...a potato. (One of these things is not like the other. Consider this foreshadowing.)

Thickening agents for the broccoli soup: sodium citrate, potato, and cornstarch.

Serious Eats / J. Kenji López-Alt

Cornstarch works much better than flour, especially if you add it by tossing the grated cheese with it, which allows you to incorporate it smoothly, with no chance of clumping. But it's still got the problem of being slightly, well, starchy.

Sodium citrate works incredibly well in this context. It's a salt that works on a chemical level to maintain a stable emulsion between fat and water. A little pinch of it in cheese soup or cheese sauce can make almost any cheese melt with the texture of Velveeta. However, at least until it becomes a more common pantry staple, I wanted to find a solution using ingredients available at any supermarket.

Scooping potato slices with a benchscraper.

Serious Eats / J. Kenji López-Alt

That led me to the humble potato. If you've ever made the mistake of trying to make mashed potatoes in a food processor or blender, you know that blending potatoes can turn them incredibly sticky and starchy, almost like bubble gum. For mashed potatoes, this is bad. But, when it's deployed in a controlled manner, this effect can be a powerful tool in your kitchen arsenal. It's the same technique I use to give my dairy-free vegan nacho sauce a gooey, cheese-like texture, and it proved to work just as well in this soup.

By adding a few ounces of potato to the soup base along with the stock and simmering it along with the broccoli, I was able to thicken up the broth enough that the cheese stayed perfectly creamy and emulsified when I blended it in at the end. As a final flavor boost, I also added just a teaspoon of dried mustard (tossed with the cheese) and a dash of hot sauce.

I blended it all together, then stirred in my charred broccoli florets.

It was everything I've ever wanted in a broccoli cheese soup: intensely cheesy, but with a strong broccoli backbone. Which, come to think of it, is exactly the way I'd describe Crucifer-Man, the wisecracking, half-man/half-brassica superhero who fights ecoterrorists by flinging extra-crispy baked kale chips.

Unlike this soup, he's not very effective.

A spoon scooping up broccoli cheese soup in a bowl, next to half a loaf of crusty bread.

Serious Eats / J. Kenji López-Alt


Broccoli Cheese Soup (That Really Tastes Like Broccoli!)

October 2016

Recipe Details

Broccoli Cheese Soup Recipe

Prep 5 mins
Cook 50 mins
Active 30 mins
Total 55 mins
Serves 6 servings

Creamy, filling, and packed with layered broccoli flavor.


  • 1 1/2 pounds (700g) broccoli

  • 2 tablespoons (30ml) vegetable oil

  • Kosher salt and freshly ground black pepper

  • 3 tablespoons (45g) unsalted butter

  • 1 medium onion, sliced (about 6 ounces; 170g)

  • 1 medium carrot, peeled and finely diced (about 4 ounces; 120g)

  • 3 medium cloves garlic, thinly sliced

  • 2 cups (475ml) water, or homemade or store-bought low-sodium chicken stock

  • 3 cups (700mlwhole milk

  • 1 small russet potato, peeled and sliced (about 4 ounces; 120g)

  • 12 ounces (340g) sharp cheddar cheese, grated (see notes)

  • 8 ounces (240g) deli-style American cheese, diced (see notes)

  • 1 teaspoon (3g) mustard powder

  • Dash of hot sauce, such as Frank's RedHot


  1. Separate broccoli into florets and stems. Cut florets into bite-size pieces and set aside. Roughly chop stems and reserve separately.

    Chopping broccoli on a cutting board

    Serious Eats / J. Kenji López-Alt

  2. Heat oil in a large Dutch oven over high heat until shimmering. Add broccoli florets and cook, without moving, until charred on the bottom, about 1 minute. Stir, season with salt and pepper, and continue cooking, stirring occasionally, until tender and charred on several surfaces, about 1 minute longer. Transfer to a rimmed baking sheet to cool.

    Cooling charred broccoli florets in a baking sheet.

    Serious Eats / J. Kenji López-Alt

  3. Return Dutch oven to medium heat and add butter, onion, carrot, and broccoli stems. Season with salt and pepper and cook, stirring frequently, until tender but not browned, about 5 minutes, lowering heat if necessary. Add garlic and cook, stirring, until fragrant, about 30 seconds.

    Sauteeing onions, carrots, and broccoli stems in a Dutch oven.

    Serious Eats / J. Kenji López-Alt

  4. Add water or chicken stock, milk, and potato and bring to a boil over high heat. Reduce to a bare simmer and cook, stirring occasionally, until broccoli and potato are completely tender, about 30 minutes.

    Pouring water or chicken stock into the Dutch oven

    Serious Eats / J. Kenji López-Alt

  5. In a large bowl, toss both cheeses together along with mustard powder. Using an immersion blender or working in batches with a countertop blender, blend soup, adding cheese a handful at a time, until completely smooth. Stir in hot sauce and season to taste with salt and pepper. Stir in reserved broccoli florets and pulse with blender a few more times until a few pieces are broken down, but most bite-size pieces remain. Serve immediately.

    Blending the broccoli cheese soup

    Serious Eats / J. Kenji López-Alt

Special Equipment

Immersion blender or countertop blender, rimmed baking sheet


Look for deli-style American cheese at the deli counter of your supermarket. You can use any combination of cheddar, American, and other young, moist cheeses, like Jack or Colby.

Nutrition Facts (per serving)
615 Calories
44g Fat
29g Carbs
30g Protein
Show Full Nutrition Label Hide Full Nutrition Label
Nutrition Facts
Servings: 6
Amount per serving
Calories 615
% Daily Value*
Total Fat 44g 56%
Saturated Fat 23g 114%
Cholesterol 115mg 38%
Sodium 1509mg 66%
Total Carbohydrate 29g 10%
Dietary Fiber 5g 19%
Total Sugars 13g
Protein 30g
Vitamin C 81mg 403%
Calcium 1157mg 89%
Iron 2mg 11%
Potassium 941mg 20%
*The % Daily Value (DV) tells you how much a nutrient in a food serving contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.
(Nutrition information is calculated using an ingredient database and should be considered an estimate.)