Soups & Stews
This cannellini bean soup recipe transforms humble white beans into a velvety, aromatic masterpiece that tastes like a Tuscan countryside dinner. The secret lies in a soffritto base of onions, celery, and carrots—slow-cooked until they dissolve into sweet, fragrant depth—while rosemary and lemon zest brighten every spoonful.
I first made this version after my daughter Lily demanded "fancy soup" after school, and it became our go-to when Portland winters made takeout feel like too much effort.
The beauty of this recipe is its versatility—it works as a vegetarian centerpiece or gains richness with pancetta if you prefer. The beans soften just enough to blend into a silky broth while keeping enough texture to satisfy.
What makes it special is the balance: creamy without being heavy, savory with just enough acidity to keep your mouth watering. The rosemary infuses the broth with piney warmth, while lemon zest adds a citrusy lift that cuts through the richness.
By the time you're done, you'll have a restaurant-quality soup that's ready in under an hour. The aroma alone—warm, herby, and slightly smoky—will have everyone gathering around the table.
It's the kind of dish that feels indulgent but comes together with simple techniques, making it perfect for busy weeknights or cozy weekend meals. Here's how to make it—no shortcuts, just proven results.
Serve it with crusty bread to soak up every last drop, or pair it with a simple green salad for a complete meal. The leftovers actually taste better the next day as the flavors meld even more. This is the soup that makes you want to cook all winter long.
Ingredients for cannellini soup
Simple pantry staples meet Tuscan magic—just 13 ingredients for velvety, rosemary-kissed white bean soup.
| Ingredient | Amount | Notes |
|---|---|---|
| Dried Cannellini Beans 🌾 | 1 ½ cups | Soaked overnight or quick-soaked |
| Yellow Onion 🧅 | 1 whole | Diced, medium-sized |
| Celery Stalks 🥬 | 3 whole | Diced, stringy parts trimmed |
| Carrots 🥕 | 2 whole | Diced, medium-sized |
| Fresh Rosemary 🌿 | ¼ cup | Chopped, stems removed |
| Lemon 🍋 | 1 whole | Zest and juice only |
| Extra-Virgin Olive Oil 🫒 | ¼ cup | For sautéing soffritto |
| Vegetable Broth 💧 | 4 cups | Low-sodium preferred |
| Garlic Cloves 🧄 | 4 cloves | Minced, fresh preferred |
| Kosher Salt 🧂 | 1 ½ tsp | Adjust to taste |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for garnish |
| Crusty Bread 🍞 | 4 slices | For serving (optional) |
The beans are the heart of this soup, so don't skimp. Dried cannellini from Whole Foods or Trader Joe's have the best texture—avoid those pre-cooked cans with weird additives. Soak overnight for creamier beans, or quick-soak by boiling for 2 minutes, then letting them sit for an hour. The soffritto—onion, celery, carrots—needs to cook low and slow until it's almost dissolved into the broth. That's where the depth comes from. Fresh rosemary is non-negotiable here; dried just won't give the same piney punch. Grab a small bunch from the grocery store's produce section—it'll keep for weeks in the fridge.
No fresh rosemary? Dried at one-third the amount works in a pinch, but trust me on this—it's worth the trip to the store. Short on time? Swap the carrots for frozen diced carrots (no thawing needed). The lemon zest can be prepped ahead and stored in the freezer for up to 3 months in an airtight container. For extra richness, stir in 2 tbsp tahini at the end—it adds a nutty depth that pairs perfectly with the rosemary. The vegetable broth? Homemade is ideal, but even the good store-bought stuff (like Pacific Foods) works fine. Just skip the high-sodium versions—they'll overpower everything.
This soup tastes even better the next day as the flavors meld. Store leftovers in the fridge for up to 5 days, or freeze for 3 months—the beans hold up beautifully. I like to portion it into containers with a slice of crusty bread on the side for easy lunches. The broth reduces slightly when reheated, so add a splash of water or broth if it gets too thick. Garnish with fresh parsley right before serving—it brightens up the whole dish and makes it look restaurant-worthy. Leftovers reheat beautifully in the microwave or on the stovetop.
Why You'll Love This Recipe
- No-Soaking Needed: I’ll admit, I used to dread the overnight soak—until I discovered these dried cannellinis soften perfectly in just a quick simmer. Toss them in cold water with the onions and celery, bring to a boil, then let them babysit themselves while you chop the carrots. By the time the rosemary hits the pot, they’re tender but still hold their shape—no mushy disappointment here.
- Rosemary Magic: Honestly, this herb is the MVP. A single sprig (or two, if you’re feeling fancy) transforms what could be a basic veggie soup into something aromatic and sophisticated. The needles release their piney brightness as it simmers, cutting through the earthiness of the beans and the sweetness of the carrots. It’s the kind of flavor that lingers—like a secret ingredient.
- Leftovers That Don’t Suck: Between us, most soups turn into sad, watery meals by day three. Not this one. The cannellinis actually taste better the next day—their skins soften just enough to melt into the broth, while the rosemary’s flavor deepens. I freeze half the batch in portions; reheating a bowl on a cold afternoon feels like a warm hug from my future self.
- Pantry Staple Power: Here’s what sold me—this uses ingredients I already have. No specialty items, no last-minute grocery runs. Onions, celery, carrots? The holy trinity of soup veggies. Dried beans? Cheaper than canned and way more flavorful. And rosemary? If you grow herbs, snip a few stems. If not, a tiny bottle lasts forever. It’s the kind of recipe that doesn’t judge your fridge’s contents.
Step-by-step instructions for cannellini bean soup with rosemary and lemon
Here's how to transform simple pantry staples into a rich, aromatic soup that's hearty enough for dinner.
Prepare the Beans for Cooking
Start by sorting through the 1.5 cups dried cannellini beans, discarding any stones or discolored beans you find. For best texture, I recommend soaking them overnight in plenty of cold water. If you're short on time, do a quick soak: cover the beans with water by 2 inches in a bowl, add 1.5 teaspoons kosher salt, and let them soak for at least 2 hours. The beans are ready when they're plump and easily pierced with a fork.
Drain and rinse the soaked beans thoroughly before using. This step removes excess starch that can make your soup gummy. I like to give them a quick rinse under cold water while swirling them around in the colander—this helps remove any surface impurities that could affect the final flavor.
Build the Soffritto Base
Heat ¼ cup extra-virgin olive oil in a large pot over medium heat. Add the 1 whole yellow onion, 3 whole celery stalks, and 2 whole carrots, all diced into ¼-inch pieces. Cook for 8-10 minutes, stirring occasionally, until the vegetables soften and the onion becomes translucent.
Add the 4 cloves minced garlic and ¼ cup chopped fresh rosemary to the pot. Cook for another 2-3 minutes until the garlic is fragrant but not browned. This aromatic base forms the flavor foundation of your soup—don't rush this step or you'll get bitter garlic. You'll know it's ready when the mixture smells deeply herbal and slightly sweet.
Simmer the Soup with Beans and Broth
Add the drained beans, 4 cups vegetable broth, and bring everything to a gentle boil. Once boiling, reduce heat to low and let it simmer uncovered for 45-50 minutes. Stir occasionally to prevent sticking, and add a splash of water if the soup gets too thick.
After about 30 minutes, taste the soup. If you want more depth, this is when I add the zest and juice of 1 whole lemon. The acidity brightens the flavors perfectly. Keep simmering until the beans are tender but not mushy—they should hold their shape when pierced with a fork. The soup should have a creamy texture from the broken-down beans.
Season and Finish
Remove the pot from heat and stir in ½ teaspoon freshly ground black pepper. Taste and adjust seasoning with additional kosher salt if needed—remember, the beans have absorbed some of the broth's saltiness. Let the soup sit off the heat for 5 minutes to allow flavors to meld.
Just before serving, stir in the ¼ cup chopped fresh parsley. This adds a fresh, bright finish that cuts through the richness of the beans. Ladle the soup into bowls and serve immediately with 4 slices crusty bread for dipping. The bread helps soak up all that delicious broth, making every bite even more satisfying.
Pro Tips For Making Cannellini Soup
- SOAK BEANS OVERNIGHT: I learned this the hard way—skipping the overnight soak leaves your beans tough and gummy no matter how long you simmer. Use a 1:3 bean-to-water ratio (about 1 cup beans to 3 cups water) in a bowl, cover, and let them sit on the counter. The next morning, they’ll be plump and tender, and your soup won’t taste like you’re chewing on dried pebbles.
- SWIM THE VEGETABLES: Don’t just dump chopped onions, celery, and carrots into the pot—they’ll turn to mush before the beans are done. Instead, parboil them for 5 minutes in salted water first, then drain and add to the beans. This keeps their texture bright and crisp, even after hours of simmering.
- SALT THE WATER HARD: Your grandmother wasn’t wrong—this soup needs bold flavor from the start. Use 1½ teaspoons of salt per quart of water when soaking the beans, and another 1 teaspoon when simmering. The beans absorb the salt, and the soup won’t taste bland even if you forget to season later.
- STIR IN ROSEMARY LATE: Fresh rosemary burns faster than you’d think, and adding it too early turns your soup into pine-scented sludge. Wait until the last 10 minutes of cooking, then toss in a sprig (or two) and let it steep—just enough to perfume the broth without overpowering it. Remove it before serving if you’re squeamish about stems.
Storing and reheating your leftovers
Refrigerator Storage
Let your cannellini soup cool completely before transferring to an airtight glass container—I prefer Pyrex with a tight-sealing lid. Store in the fridge for up to 5 days, where the flavors actually deepen as the rosemary and lemon infuse further.
The broth will thicken slightly overnight, so add ¼ cup water or broth when reheating if you prefer a looser consistency. 🥫
Freezer-Friendly Tips
For longer storage, portion the soup into quart-sized freezer bags or glass containers, leaving 1-inch headspace for expansion. Freeze for up to 3 months—the beans hold their texture beautifully.
When ready to eat, thaw overnight in the fridge, then reheat gently. I like to add a splash of lemon juice after reheating to revive that bright citrus note.
Stovetop Reheating
My favorite method is stovetop reheating—it preserves the creamy texture better than microwaving. Pour the soup into a pot and heat over medium-low for 8-10 minutes, stirring occasionally. If it looks too thick, add 2-3 tablespoons of water or broth to restore the original consistency.
Taste and adjust seasoning—soup often needs a pinch more salt after reheating. 🔥
Microwave Revival
For quick meals, transfer a portion to a microwave-safe bowl and heat on 50% power for 2-3 minutes, stirring halfway. The microwave can make beans gummy, so add 1 tablespoon of water if needed.
Finish with a sprinkle of fresh parsley and a crack of black pepper to brighten the flavors.
Reviving Leftovers
If your soup tastes flat after reheating, it likely needs more acidity. A squeeze of lemon juice or a pinch of red pepper flakes works wonders. For extra richness, stir in 1 tablespoon of tahini or a pat of butter—both add depth without overpowering the rosemary.
Leftovers make fantastic lunches with a side of crusty bread or a simple arugula salad.
Make-Ahead Magic
This soup is perfect for meal prep—I often make a big batch on Sundays. Store components separately: beans, broth, and aromatics in one container, and lemon zest/rosemary in another.
When ready to eat, simply reheat and combine. The fresh herbs and citrus should be added just before serving to keep their bright flavors intact. 💡
Nutrition facts
Frequently asked questions
Can I use canned cannellini beans instead of dried?
Yes! For convenience, use 2 (15-ounce) cans of no-salt-added cannellini beans, drained and rinsed. Drain thoroughly to avoid a watery soup. The texture will be slightly softer than dried beans, but the flavor remains excellent. Just reduce the simmering time to 20-25 minutes after adding the beans to the broth.
How can I make this soup creamier without dairy?
Blend half the soup in batches until smooth, then stir it back into the pot. For extra richness, add 1 tablespoon tahini or 2 tablespoons olive oil at the end. The beans naturally release starch when cooked, creating a velvety texture. If you prefer a thicker consistency, simmer uncovered for 10 extra minutes to reduce the broth.
What's the best way to store leftovers?
Transfer to an airtight glass container and refrigerate for up to 5 days. For freezing, portion into quart-sized bags with 1-inch headspace and freeze for 3 months. Thaw overnight in the fridge—never microwave directly from frozen. Reheat gently on the stovetop with a splash of water if needed.
Can I add meat to this vegetarian recipe?
For a meaty version, brown 4 oz pancetta or bacon first, then remove and crumble it into the finished soup. Add it during the last 5 minutes of simmering to keep it crispy. Alternatively, use ½ lb Italian sausage (removed from casing) for a heartier flavor. Just reduce the broth by ½ cup to maintain balance.
Why did my soup turn out too salty?
Canned beans or broth often contain hidden salt. Always use no-salt-added versions and taste as you go. If it's too salty, stir in ½ cup unsalted tomato paste (dilutes saltiness) or add 1 extra cup broth/water. For future batches, reduce salt by ⅓ teaspoon and adjust at the end. The beans absorb flavor—don't rush seasoning!
