Quick Recipe Version (TL;DR)
Quick Ingredients
- 3 tbsp extra-virgin olive oil, plus 2 tbsp for finishing
- 3 fresh rosemary sprigs, plus 1 tsp finely chopped for drizzle
- 1 large yellow onion, small dice (about 2 cups)
- 2 medium carrots, small dice (about 1 cup)
- 4 garlic cloves, thinly sliced
- 3 cans (15 oz each) cannellini beans, drained and rinsed
- 5 cups low-sodium vegetable or chicken broth
- 1 bay leaf
- 1/2 tsp lemon zest + 2 tsp lemon juice
- 1 1/4 tsp kosher salt; 3/4 tsp black pepper
- Pinch red pepper flakes (optional)
- 2 tbsp chopped flat-leaf parsley; grated Parmesan for serving (optional)
Do This
- 1. Warm 3 tbsp oil with 1 rosemary sprig and the sliced garlic over medium heat until fragrant, 2–3 minutes; remove the sprig.
- 2. Add onion, carrots, 1/2 tsp salt; cook until tender and glossy, 8–10 minutes.
- 3. Stir in red pepper flakes (optional), beans, broth, bay leaf; tie remaining rosemary sprigs and add to pot.
- 4. Bring to a simmer, then cook gently at 185–195°F (85–90°C) for 20 minutes; remove rosemary bundle and bay leaf.
- 5. Partially blend: puree about half the soup with an immersion blender (or blend 2 cups and return) for creaminess.
- 6. Stir in lemon zest and juice, pepper, and remaining salt to taste; drizzle with 2 tbsp olive oil mixed with 1 tsp chopped rosemary and parsley. Serve hot.
Why You’ll Love This Recipe
- Comforting and creamy without cream—thanks to a partial blend of the beans.
- Big rosemary aroma from a gentle oil infusion and a rosemary bundle simmered in the pot.
- Weeknight-friendly: pantry staples, one pot, under an hour.
- Easy to adapt—keep it vegetarian or add pancetta, kale, or Parmesan.
Grocery List
- Produce: 1 large yellow onion, 2 medium carrots, 1 lemon, 1 bunch flat-leaf parsley, 1 small bunch fresh rosemary, 4 garlic cloves
- Dairy: Parmesan for serving (optional)
- Pantry: 3 cans cannellini beans (15 oz each), low-sodium vegetable or chicken broth (5 cups), extra-virgin olive oil, bay leaf, kosher salt, black pepper, red pepper flakes (optional)
Full Ingredients
Soup Base
- 3 tbsp extra-virgin olive oil
- 1 rosemary sprig (about 6–7 inches), for initial oil infusion
- 4 garlic cloves, thinly sliced
- 1 large yellow onion, small dice (about 2 cups)
- 2 medium carrots, small dice (about 1 cup)
- 3 cans (15 oz each) cannellini beans, drained and rinsed
- 5 cups low-sodium vegetable or chicken broth
- 1 bay leaf
- 2 rosemary sprigs, tied into a small bundle with kitchen twine for simmering
- 1/4 tsp red pepper flakes (optional)
- 1 1/4 tsp kosher salt, plus more to taste
- 3/4 tsp freshly ground black pepper
Finish & Garnish
- 1/2 tsp finely grated lemon zest
- 2–3 tsp fresh lemon juice
- 2 tbsp extra-virgin olive oil mixed with 1 tsp very finely chopped rosemary (for drizzling)
- 2 tbsp chopped flat-leaf parsley
- Grated Parmesan, to taste (optional)

Step-by-Step Instructions
Step 1: Prep your aromatics and rosemary
Dice the onion and carrots. Thinly slice the garlic. Drain and rinse the cannellini beans. Tie two rosemary sprigs with kitchen twine (or place in a tea infuser) to create a neat bundle for simmering. Keep another single sprig handy for the initial oil infusion.
Step 2: Infuse the oil with rosemary and garlic
In a heavy pot or Dutch oven, warm 3 tbsp olive oil, the single rosemary sprig, and the sliced garlic over medium heat until the garlic barely sizzles and the rosemary is fragrant, 2–3 minutes. Do not brown the garlic. Remove and discard the single rosemary sprig; leave the garlic in the pot.
Step 3: Sweat the onion and carrots
Add the onion, carrots, and 1/2 tsp of the salt. Cook over medium heat, stirring occasionally, until the onion is translucent and the carrots are tender around the edges, 8–10 minutes. Add red pepper flakes if using, and cook 30 seconds more.
Step 4: Build the soup and simmer
Stir in the beans, pour in the broth, and add the bay leaf and the tied rosemary bundle. Bring the pot just to a boil, then immediately reduce to a gentle simmer at 185–195°F (85–90°C)—barely bubbling—and cook for 20 minutes to allow the rosemary to steep and the flavors to meld. Skim any foam. Remove and discard the bay leaf and rosemary bundle.
Step 5: Partially blend for creaminess
For that creamy-yet-chunky texture, use an immersion blender to puree roughly half the soup directly in the pot (20–30 seconds), or ladle about 2 cups into a countertop blender, blend until smooth, and return it to the pot. If needed, thin with a splash of hot water or broth to reach your preferred consistency.
Step 6: Brighten and season
Stir in the lemon zest and 2 teaspoons lemon juice, the remaining salt, and the black pepper. Taste and adjust—add another 1 teaspoon lemon juice for extra brightness and more salt if needed. Keep the soup hot (around 165°F/74°C for serving).
Step 7: Finish and serve
In a small bowl, combine 2 tbsp olive oil with 1 tsp chopped rosemary; let it sit 2 minutes to bloom. Ladle soup into warm bowls, drizzle with the rosemary oil, and sprinkle with parsley. Add grated Parmesan if desired. Serve immediately with crusty bread.
Pro Tips
- Control the rosemary: simmer it gently in a bundle so its oils infuse the soup without loose needles floating around.
- Season in layers: a little salt early helps the vegetables sweat; finish with salt and lemon to wake up the flavors.
- Partial blend, don’t over-blend: aim for a silky base with intact beans for texture.
- Broth matters: low-sodium stock gives you room to season without oversalting.
- Optional Parmesan rind: simmer a rind with the soup (remove before blending) for deeper savory notes.
Variations
- Tuscan Kale: Stir in 3 packed cups shredded lacinato kale during the last 10 minutes of simmering.
- Pancetta and Rosemary: Brown 4 oz diced pancetta at the start, then proceed with the recipe in the rendered fat plus 1 tbsp olive oil.
- Extra Hearty: Add 1 small diced Yukon Gold potato with the carrots; simmer until tender before blending.
Storage & Make-Ahead
Refrigerate cooled soup in an airtight container for up to 4 days; keep the rosemary oil drizzle separate. Freeze up to 3 months. Thaw overnight in the fridge and reheat gently over medium-low heat, thinning with water or broth as needed. For best flavor when freezing, add the lemon juice and fresh herbs after reheating.
Nutrition (per serving)
Approximate: 300 calories; 12 g fat; 38 g carbohydrates; 12 g protein; 12 g fiber; 830 mg sodium (will vary based on broth and added salt).
