Jen wasn’t trying to impress anyone. I’d stopped by her place on a chilly Tuesday evening to drop off a book I’d borrowed months ago—the kind of mundane errand you put off until guilt finally wins. The smell hit me before I even got past her mudroom. Something savory and herbal, warm in a way that seemed to wrap around the whole house. She was stirring a pot on the stove with one hand and helping her kid with homework with the other, completely unfazed.
“Oh, it’s just soup,” she said when I asked what was cooking. Just soup. Let me tell you, there was nothing “just” about it. The aroma alone had me inventing reasons to linger—I mean, I suddenly remembered I had a question about her lawn care guy. That’s how good this smelled. She finally ladled me a small bowl, almost as an afterthought, and I stood at her kitchen counter eating it while she multitasked around me. Honestly? It was one of those moments where you take a bite and forget there are other people in the room. The soup was creamy without being heavy, bright with a little lemon and herbs, and packed with tender white beans that made it feel like a real meal.
I asked for the recipe on my way out, and she shrugged and said something like, “It’s really nothing special.” But that’s the thing about recipes that come from people who aren’t trying to show off—they’re usually the ones you end up making over and over. Maybe you’ve been there, standing in someone else’s kitchen, watching them throw dinner together like it’s no big deal, and realizing you’ve just found a new favorite dish. This creamy Tuscan white bean soup is that recipe for me. It’s the one I make when I want something that feels indulgent but doesn’t leave me feeling sluggish. The one that tastes like it simmered all day but comes together in under half an hour. Jen might not think it’s anything special, but I’ve made it at least a dozen times since that Tuesday, and I’m pretty sure it’s going to become a staple in your kitchen too.
Why You’ll Love This Recipe
This isn’t just another bean soup recipe. After testing this dish in my own kitchen—and yes, I’ve messed it up a few times to get it right—I can tell you exactly why this version stands out. It’s the kind of recipe that makes you feel like you’re eating something decadent, but your body thanks you for it later. Here’s what makes it special:
- Quick & Easy: From start to finish, this soup is on the table in 30 minutes flat. No overnight soaking, no long simmering—just a quick sauté, a few minutes of stirring, and dinner is served. Perfect for those nights when you want something comforting but don’t have an hour to spend in the kitchen.
- Simple Ingredients: You probably already have most of these in your pantry. Canned beans, garlic, onion, a can of diced tomatoes, some broth, and a handful of pantry spices. The only “special” ingredient is a little heavy cream or milk, but honestly, you could skip it and still have a fantastic soup.
- Perfect for Meal Prep: This soup actually gets better after a day or two in the fridge. The flavors meld together beautifully, making it an ideal candidate for Sunday meal prep or make-ahead lunches. I’ve been known to double the batch just so I have leftovers for the week.
- Crowd-Pleaser: I’ve served this to picky eaters, health-conscious friends, and my uncle who swears he doesn’t like beans. Everyone goes back for seconds. It’s one of those rare recipes that appeals to almost everyone, regardless of dietary preferences.
- Unbelievably Delicious: The texture is what gets me every time. The beans break down just enough to create a creamy, almost velvety broth without needing to blend anything. A squeeze of lemon at the end brightens everything up, and the fresh herbs add a pop of color and flavor that makes it feel restaurant-worthy.
What makes this different from the dozens of other white bean soup recipes out there? It’s the balance. So many bean soups are either too heavy (thanks to loads of cream or cheese) or too thin and watery. This one hits that sweet spot where it feels rich and satisfying but still light enough that you don’t need a nap afterward. It’s comfort food reimagined—healthier, faster, but with the same soul-soothing satisfaction. The kind of soup that makes you close your eyes after the first bite and forget about whatever stressful thing happened at work that day.
What Ingredients You Will Need
This recipe relies on simple, wholesome ingredients that work together to create something greater than the sum of their parts. Most of these are pantry staples, which means you can whip up this soup on a whim without a special trip to the grocery store. Here’s what you’ll need:
- Olive Oil: 2 tablespoons of good extra-virgin olive oil for sautéing the aromatics. I prefer a medium-intensity olive oil here—something that adds flavor without being too grassy or peppery. California Olive Ranch is my go-to for everyday cooking.
- Yellow Onion: 1 medium yellow onion, diced. Yellow onions have the right balance of sweetness and sharpness for this soup. If you only have a white or red onion, those will work too, though red onion will give the soup a slightly different color.
- Garlic: 4 cloves of fresh garlic, minced. Please don’t use the pre-minced stuff in a jar for this recipe. Fresh garlic makes a noticeable difference in the flavor profile, and it only takes an extra 30 seconds to chop a few cloves.
- Carrots: 2 medium carrots, peeled and diced. These add a subtle sweetness and a bit of color. If you’re in a pinch, you could skip them, but I think they add a lot to the overall flavor.
- Celery: 2 stalks of celery, diced. The classic mirepoix base. Celery adds a slightly savory, earthy note that rounds out the soup.
- Cannellini Beans: 2 cans (15 ounces each) of cannellini beans, drained and rinsed. These are also called white kidney beans, and they’re the star of the show. Their creamy texture is perfect for this soup. If you can’t find cannellini beans, great northern beans or even chickpeas would work as substitutes.
- Diced Tomatoes: 1 can (14.5 ounces) of diced tomatoes, undrained. I like using fire-roasted diced tomatoes for a little extra depth of flavor. San Marzano tomatoes are my preference, but any brand will do.
- Vegetable Broth: 4 cups of low-sodium vegetable broth. Using low-sodium broth gives you control over the salt level. Chicken broth works too if you’re not keeping it vegetarian.
- Dried Herbs: 1 teaspoon dried oregano, 1 teaspoon dried thyme, and 1/2 teaspoon dried rosemary. These Italian-inspired herbs give the soup its Tuscan character. If you have fresh herbs, use about triple the amount—3 teaspoons each of fresh oregano and thyme, and 1 1/2 teaspoons of fresh rosemary, finely chopped.
- Red Pepper Flakes: 1/4 teaspoon (or more to taste). This is optional, but I love the subtle heat it adds. It doesn’t make the soup spicy—it just wakes up all the other flavors.
- Heavy Cream: 1/2 cup of heavy cream or half-and-half. This is what gives the soup its luxurious, creamy texture. For a lighter version, you can use whole milk or even unsweetened oat milk, but the soup won’t be quite as rich.
- Lemon: 1 lemon, juiced. A squeeze of fresh lemon juice at the end brightens the entire soup and cuts through the richness. Don’t skip this—it’s the secret ingredient that makes everything pop.
- Salt and Black Pepper: To taste. I recommend starting with 1 teaspoon of salt and 1/2 teaspoon of black pepper, then adjusting at the end.
- Fresh Parsley or Basil: A handful of fresh herbs for garnish. This adds a fresh, vibrant finish to the soup and makes it look beautiful in the bowl.
- Parmesan Cheese: Optional but highly recommended. Freshly grated Parmesan for serving adds a salty, nutty finish that takes this soup to another level.
Equipment Needed
You don’t need a fancy kitchen to make this soup. Here’s what you’ll need:
- Large Dutch Oven or Heavy-Bottomed Pot: A 5- to 6-quart pot is ideal. I use my trusty Le Creuset Dutch oven for this recipe, but any heavy pot with a lid will work. The key is even heat distribution to prevent burning.
- Sharp Chef’s Knife: For dicing the vegetables. A dull knife makes prep work frustrating and dangerous. A good 8-inch chef’s knife is worth the investment.
- Cutting Board: Any sturdy cutting board will do. I prefer a large wooden board for vegetable prep.
- Wooden Spoon or Silicone Spatula: For stirring the soup. Wooden spoons are gentle on your cookware and don’t conduct heat.
- Measuring Cups and Spoons: For accurate measurements. Eyeballing is fine for some recipes, but for consistent results, measuring is better.
- Citrus Juicer or Fork: For juicing the lemon. A simple handheld juicer makes quick work of it, but a fork works in a pinch.
- Ladle: For serving the soup. A deep ladle makes portioning easy and neat.
- Box Grater or Microplane: For grating Parmesan cheese. Pre-shredded cheese doesn’t melt as smoothly, so grating your own is worth the extra minute.
If you don’t have a Dutch oven, a large stockpot or even a deep skillet with high sides will work. The most important thing is that the pot is large enough to hold all the ingredients without spilling over when you stir.
Preparation Method

Let’s get cooking. This soup comes together quickly, so I recommend prepping all your ingredients before you turn on the stove. Trust me on this—having everything chopped and measured makes the process so much smoother.
- Prep the Vegetables: Start by dicing your onion, carrots, and celery into small, uniform pieces—about 1/4-inch dice. Mince the garlic cloves. Having everything roughly the same size ensures even cooking. Set the vegetables aside in separate piles since the garlic goes in later than the onion, carrots, and celery.
- Heat the Oil: Place your Dutch oven or heavy pot over medium heat and add the 2 tablespoons of olive oil. Let it warm up for about 30 seconds until it shimmers slightly. You don’t want it smoking—just hot enough that a piece of onion sizzles when it hits the oil.
- Sauté the Aromatics: Add the diced onion, carrots, and celery to the pot. Stir to coat them in the oil. Cook for 5 to 7 minutes, stirring occasionally, until the vegetables have softened and the onion is translucent. The kitchen should start smelling amazing at this point—that savory, sweet aroma of cooking mirepoix.
- Add the Garlic and Spices: Push the vegetables to the sides of the pot, creating a little well in the center. Add the minced garlic, dried oregano, dried thyme, dried rosemary, and red pepper flakes (if using) to the center. Cook for about 30 seconds, stirring constantly, until the garlic is fragrant. Be careful not to burn the garlic—it can turn bitter quickly.
- Add the Tomatoes and Beans: Pour in the can of diced tomatoes (with their juices) and the drained and rinsed cannellini beans. Stir everything together until well combined. Let it cook for 2 minutes, allowing the tomatoes to break down slightly and the beans to absorb some of the flavors.
- Add the Broth: Pour in the 4 cups of vegetable broth. Stir to combine, scraping up any browned bits from the bottom of the pot—that’s where a lot of flavor lives. Increase the heat to high and bring the soup to a gentle boil.
- Simmer the Soup: Once the soup reaches a boil, reduce the heat to medium-low so it’s at a gentle simmer. Cover the pot with the lid slightly ajar to allow some steam to escape. Let it simmer for 15 minutes. During this time, the flavors meld together and the beans soften further, releasing their starchiness into the broth and creating that creamy texture.
- Partially Mash the Beans (Optional but Recommended): After 15 minutes, remove the pot from the heat. Using a potato masher or the back of a wooden spoon, gently mash about half of the beans right in the pot. This is what gives the soup its creamy, velvety texture without needing to blend it. If you prefer a chunkier soup, mash fewer beans. For a smoother soup, mash more. I usually go for about half—it’s the perfect balance.
- Add the Cream: Return the pot to low heat. Stir in the 1/2 cup of heavy cream (or half-and-half). Let it warm through for about 2 minutes, stirring occasionally. Don’t let it come to a boil after adding the cream, or it might curdle. Low and slow is the way to go.
- Finish with Lemon: Remove the pot from the heat. Squeeze the juice of one lemon into the soup and stir. Taste the soup and adjust the seasoning with salt and black pepper. I usually start with 1 teaspoon of salt and 1/2 teaspoon of pepper, then add more as needed. Remember that the Parmesan you’ll add at serving is salty, so go easy on the salt at this stage.
- Serve and Garnish: Ladle the soup into bowls. Top with a generous sprinkle of freshly grated Parmesan cheese and a handful of chopped fresh parsley or basil. If you’re feeling fancy, drizzle a little olive oil over the top for a glossy finish. Serve immediately with crusty bread or a simple side salad.
One thing I learned the hard way: don’t rush the sauté step. Those first 5 to 7 minutes of cooking the vegetables build the entire flavor foundation of the soup. If you’re tempted to crank up the heat to speed things up, resist the urge. Low and slow on the sauté means sweet, caramelized vegetables instead of burnt, bitter ones.
Cooking Tips & Techniques
After making this soup more times than I can count, I’ve picked up a few tricks that make a real difference. Here are my best tips for getting it right every time:
- Don’t Skip Rinsing the Beans: I know it’s tempting to just dump the cans into the pot, but rinsing the beans removes the excess sodium and starchy liquid that can make the soup taste canned. A quick rinse in a colander takes 30 seconds and makes a noticeable difference in the final flavor.
- Use Low-Sodium Broth: This gives you control over the salt level. Different brands of broth have wildly different sodium content, and you can always add more salt at the end if needed. You can’t take it out once it’s in there.
- The Lemon is Non-Negotiable: I once made this soup and forgot the lemon. It was fine—good, even—but it wasn’t great. That squeeze of lemon at the end brightens everything and prevents the soup from tasting flat or one-dimensional. It’s the same principle as adding vinegar to beans or a splash of lime to chili—acidity balances richness.
- Toast Your Spices: When you add the dried herbs to the garlic in the hot oil, let them cook for just a few seconds before adding the tomatoes. This “blooming” step releases the essential oils in the dried herbs, making them more aromatic and flavorful. It’s a small step that makes a big difference.
- Watch Your Heat with the Cream: Adding cream to a boiling soup is a recipe for curdled soup. Always reduce the heat to low before stirring in the cream, and never let it boil after that. If you want to be extra careful, temper the cream by stirring a ladleful of hot soup into the cream before adding it to the pot.
- Make It Ahead: This soup is actually better the next day. The flavors continue to develop as it sits, and the texture gets even creamier as the beans break down further. If you have time, make it a day ahead and reheat it gently on the stove.
- My Biggest Failure: The first time I made this, I used full-fat coconut milk instead of heavy cream because I thought it would be healthier. It was… not good. The coconut flavor clashed with the Italian herbs, and the texture was weirdly thin. Stick with dairy cream or a neutral-tasting non-dairy milk like oat milk if you need a dairy-free option.
Variations & Adaptations
One of the best things about this soup is how adaptable it is. Here are some variations I’ve tried and loved:
- Make It Vegan: Replace the heavy cream with full-fat oat milk or a rich cashew cream. Use nutritional yeast instead of Parmesan for that savory, cheesy flavor. The soup will be slightly less rich, but still delicious and satisfying.
- Add Greens: Stir in a few handfuls of fresh spinach or kale during the last 2 minutes of cooking. The greens wilt down beautifully and add color, nutrients, and a slight bitterness that balances the creamy broth. I love adding a big handful of baby spinach—it practically disappears into the soup.
- Spice It Up: If you like heat, double the red pepper flakes or add a finely chopped fresh chili pepper along with the garlic. A dash of smoked paprika also adds a lovely warmth and depth.
- Protein Boost: Add cooked Italian sausage (either mild or spicy) for a heartier version. Brown the sausage in the pot before sautéing the vegetables, then remove it and add it back in with the broth. Or keep it vegetarian and add a can of drained chickpeas along with the cannellini beans for extra protein.
- Herb Swap: Play around with different herb combinations. Fresh rosemary and sage are wonderful in the fall and winter. In the summer, try fresh basil and a pinch of dried mint for a brighter flavor profile.
- Slow Cooker Adaptation: Sauté the vegetables and garlic on the stovetop first, then transfer everything except the cream and lemon to a slow cooker. Cook on low for 4 to 6 hours or high for 2 to 3 hours. Stir in the cream and lemon just before serving.
- My Personal Favorite Variation: I once added a tablespoon of tomato paste along with the garlic and spices, and it deepened the flavor in a way that was absolutely incredible. The tomato paste caramelizes slightly in the oil, adding a rich, umami note that makes the soup taste like it’s been simmering for hours. I do this almost every time now.
Serving & Storage Suggestions
This soup is wonderfully versatile when it comes to serving and storing. Here’s everything you need to know:
- Serving Temperature: Serve the soup hot, straight from the pot. I like to let it cool for just a minute or two after ladling it into bowls so it’s not scalding hot, but still warm and comforting.
- Presentation: A drizzle of good olive oil, a sprinkle of fresh herbs, and a generous grating of Parmesan cheese make this soup look as good as it tastes. If you have crusty bread on hand, serve it alongside for dipping—sourdough or a rustic Italian loaf are my favorites.
- Complementary Dishes: This soup pairs beautifully with a simple arugula salad dressed with lemon vinaigrette. The peppery greens and bright dressing contrast nicely with the creamy soup. A glass of crisp white wine, like a Pinot Grigio or Sauvignon Blanc, is a lovely accompaniment for a grown-up dinner.
- Refrigerator Storage: Store leftovers in an airtight container in the refrigerator for up to 5 days. The soup will thicken as it sits because the beans continue to absorb liquid. When reheating, add a splash of broth or water to thin it to your desired consistency.
- Freezer Storage: This soup freezes beautifully. Let it cool completely, then transfer it to freezer-safe containers or zip-top bags. It will keep for up to 3 months. Thaw overnight in the refrigerator before reheating. Note that the texture of the cream may change slightly after freezing, so give it a good stir while reheating to bring it back together.
- Reheating: Reheat the soup gently on the stovetop over medium-low heat, stirring occasionally. You can also microwave individual portions in 30-second bursts, stirring between each. If the soup seems too thick after reheating, thin it with a little broth, water, or milk.
- Flavor Development: Here’s a little secret—this soup is even better on day two or three. The flavors have time to meld and deepen, and the texture becomes even creamier as the beans continue to break down. I often make a batch on Sunday specifically so I can enjoy it for lunch throughout the week.
Nutritional Information & Benefits
This soup isn’t just delicious—it’s packed with good-for-you ingredients that make it a smart choice for a healthy meal. Here’s a rough nutritional breakdown per serving (based on 6 servings):
- Calories: Approximately 280-320 per serving (without Parmesan garnish)
- Protein: 12-15 grams (thanks to the beans)
- Fiber: 8-10 grams (excellent for digestive health)
- Fat: 12-15 grams (mostly from olive oil and cream)
- Carbohydrates: 35-40 grams
- Sodium: 450-550 mg (depending on broth and added salt)
Health Benefits: Cannellini beans are a fantastic source of plant-based protein and soluble fiber, which helps keep you full and supports healthy cholesterol levels. The olive oil provides heart-healthy monounsaturated fats, while the vegetables deliver a good dose of vitamins A and C. The garlic and onions contain compounds that support immune health. This soup is naturally gluten-free and can easily be made dairy-free or vegan with simple substitutions.
Dietary Considerations: As written, this recipe is vegetarian and gluten-free. It can be made vegan by using oat milk or cashew cream instead of heavy cream, and nutritional yeast instead of Parmesan. It’s also relatively low in calories for such a satisfying meal, making it a great option if you’re watching your weight but don’t want to feel deprived.
Potential Allergens: This recipe contains dairy (cream and Parmesan). If you have a dairy allergy, use a dairy-free cream alternative and skip the Parmesan or use a vegan alternative.
Conclusion
This creamy Tuscan white bean soup has become a staple in my kitchen for good reason. It’s the kind of recipe that proves you don’t need complicated techniques or hard-to-find ingredients to make something truly special. Every time I make it, I’m transported back to that chilly Tuesday evening at Jen’s house, standing in her kitchen with a bowl of soup that was never meant to impress anyone—but did anyway.
I hope you’ll give this recipe a try and make it your own. Maybe you’ll add a little extra spice, throw in some greens, or serve it with a different type of bread. That’s the beauty of a simple, well-built recipe—it’s a starting point, not a rulebook. If you make it, I’d love to hear how it turned out. Leave a comment below and let me know if you tried any variations or if this soup found its way into your regular dinner rotation. And if you’re looking for another cozy, satisfying meal, you might also enjoy my hearty lentil and vegetable stew or this simple roasted tomato basil soup. Happy cooking, friends!
Frequently Asked Questions
Can I use dried beans instead of canned?
Yes, but you’ll need to adjust the cooking time significantly. Soak 1 cup of dried cannellini beans overnight, then drain and rinse them. Add them to the soup with the broth and simmer for 45 minutes to 1 hour, or until tender, before adding the cream and lemon. You may need to add extra broth as the beans absorb liquid.
Can I make this soup in an Instant Pot?
Absolutely. Use the sauté function to cook the vegetables and garlic, then add the remaining ingredients (except the cream and lemon). Pressure cook on high for 8 minutes, then do a quick release. Stir in the cream and lemon juice before serving. If using dried beans, increase the pressure cooking time to 30 minutes.
How can I thicken the soup without cream?
Mash more of the beans! That’s the beauty of this recipe. Simply use a potato masher or immersion blender to break down more of the beans until you reach your desired consistency. You can also stir in a tablespoon of cornstarch mixed with cold water if you want an extra-thick texture without dairy.
What can I use instead of cannellini beans?
Great northern beans are the closest substitute and will give you a very similar result. Navy beans or butter beans (lima beans) also work well. If you’re in a pinch, chickpeas can work, though they’ll give the soup a slightly different texture and flavor. Avoid kidney beans or black beans—they’re too firm and have a different flavor profile that doesn’t suit this soup as well.
Is this soup freezer-friendly?
Yes, it freezes beautifully! Let the soup cool completely, then transfer it to freezer-safe containers. It will keep for up to 3 months. Thaw overnight in the refrigerator before reheating. The texture may be slightly different after freezing due to the cream, but a good stir while reheating usually brings it back together. For best results, you can also freeze the soup before adding the cream and stir it in after reheating.
Pin This Recipe!

Creamy Tuscan White Bean Soup: Easy 30-Minute Dinner
A creamy, comforting white bean soup that comes together in just 30 minutes. Packed with tender cannellini beans, aromatic herbs, and a bright squeeze of lemon, this easy recipe is perfect for busy weeknights and tastes like it simmered all day.
- Prep Time: 10 minutes
- Cook Time: 20 minutes
- Total Time: 30 minutes
- Yield: 6 servings 1x
- Category: Main Course
- Cuisine: Italian
Ingredients
- 2 tablespoons extra-virgin olive oil
- 1 medium yellow onion, diced
- 4 cloves garlic, minced
- 2 medium carrots, peeled and diced
- 2 stalks celery, diced
- 2 cans (15 ounces each) cannellini beans, drained and rinsed
- 1 can (14.5 ounces) diced tomatoes, undrained (fire-roasted preferred)
- 4 cups low-sodium vegetable broth
- 1 teaspoon dried oregano
- 1 teaspoon dried thyme
- 1/2 teaspoon dried rosemary
- 1/4 teaspoon red pepper flakes (optional)
- 1/2 cup heavy cream or half-and-half
- 1 lemon, juiced
- Salt and black pepper to taste (start with 1 teaspoon salt and 1/2 teaspoon pepper)
- Fresh parsley or basil, chopped, for garnish
- Freshly grated Parmesan cheese, for serving (optional)
Instructions
- Prep the Vegetables: Dice the onion, carrots, and celery into small, uniform pieces (about 1/4-inch dice). Mince the garlic. Set aside in separate piles.
- Heat the Oil: Place a large Dutch oven or heavy-bottomed pot over medium heat and add the olive oil. Heat until shimmering.
- Sauté the Aromatics: Add the diced onion, carrots, and celery. Cook for 5 to 7 minutes, stirring occasionally, until softened and the onion is translucent.
- Add the Garlic and Spices: Push vegetables to the sides of the pot. Add the minced garlic, dried oregano, dried thyme, dried rosemary, and red pepper flakes (if using) to the center. Cook for about 30 seconds, stirring constantly, until fragrant.
- Add the Tomatoes and Beans: Pour in the diced tomatoes (with juices) and the drained and rinsed cannellini beans. Stir to combine. Cook for 2 minutes.
- Add the Broth: Pour in the vegetable broth. Stir, scraping up any browned bits from the bottom of the pot. Increase heat to high and bring to a gentle boil.
- Simmer the Soup: Reduce heat to medium-low to maintain a gentle simmer. Cover the pot with the lid slightly ajar. Simmer for 15 minutes.
- Partially Mash the Beans (Optional but Recommended): Remove pot from heat. Using a potato masher or the back of a wooden spoon, gently mash about half of the beans right in the pot.
- Add the Cream: Return pot to low heat. Stir in the heavy cream. Warm through for about 2 minutes, stirring occasionally. Do not let it boil.
- Finish with Lemon: Remove from heat. Squeeze the lemon juice into the soup and stir. Taste and adjust seasoning with salt and black pepper.
- Serve and Garnish: Ladle soup into bowls. Top with freshly grated Parmesan cheese and chopped fresh parsley or basil. Serve immediately.
Notes
Don’t rush the sauté step—it builds the flavor foundation. Rinse canned beans to remove excess sodium. The lemon juice is essential for brightness. Add cream over low heat to prevent curdling. Soup tastes even better the next day. For a vegan version, use oat milk or cashew cream and nutritional yeast instead of Parmesan.
Nutrition
- Serving Size: 1 serving (about 1.5
- Calories: 300
- Sugar: 8
- Sodium: 500
- Fat: 14
- Saturated Fat: 5
- Carbohydrates: 38
- Fiber: 9
- Protein: 13
Keywords: white bean soup, Tuscan soup, creamy soup, 30-minute dinner, easy soup recipe, cannellini bean soup, vegetarian soup, healthy soup, comfort food, quick dinner


