Soups & Stews
This bean soup with potatoes and onion and garlic recipe delivers the kind of hearty, comforting flavor that transforms simple ingredients into a satisfying meal. The secret lies in slow simmering—allowing the beans to soften while the onions caramelize and garlic infuses every spoonful with deep, savory notes.
I developed this recipe during chilly evenings when I needed something warm, filling, and packed with texture, and it’s become a staple in my rotation.
What sets this soup apart is the balance of earthy beans, creamy potatoes, and aromatic onion-garlic base. Unlike quick-fix versions, this recipe builds flavor through low-and-slow cooking, ensuring each bite is rich and deeply satisfying.
The potatoes absorb the broth while staying tender, and the beans develop a meltingly soft texture without losing their structure. No fancy techniques—just a pot, patience, and a few simple ingredients.
The result is a restaurant-quality soup that’s hearty enough for a main course but simple enough for a weeknight dinner. The aroma alone—warm, garlicky, and slightly smoky—will have everyone gathered around the table.
Serve it with crusty bread to soak up every last drop of that flavorful broth, or pair it with a green salad for balance. This is the kind of dish that gets better with leftovers, too.
Ready in about 45 minutes, this soup requires minimal prep but maximum flavor. The key is letting it simmer until the flavors meld together—no rushing, just deep, satisfying taste.
Whether you're feeding a family or meal prepping for the week, this bean soup delivers comfort in every bowl. Let’s get started!
Ingredients for bean soup with potatoes and onion and garlic
Earthy beans, tender potatoes, and aromatic onion-garlic base create this restaurant-quality vegan soup.
| Ingredient | Amount | Notes |
|---|---|---|
| Dried Navy Beans 🌱 | 2 cups | Rinsed before soaking overnight |
| Yellow Onions 🧅 | 2 whole | Medium size, diced finely |
| Garlic Cloves 🧄 | 6 cloves | Peeled, minced for infusion |
| Russet Potatoes 🥔 | 2 lbs | Peeled, cut into 1-inch cubes |
| Extra-Virgin Olive Oil 🫒 | ½ cup | For sautéing onions and garlic |
| Vegetable Broth 💧 | 6 cups | Low-sodium preferred |
| Tomato Paste 🍅 | 2 tbsp | For depth of flavor |
| Smoked Paprika 🌶️ | 1 tsp | For subtle smokiness |
| Ground Cumin 🌿 | 1 tsp | Toasted for aromatic depth |
| Bay Leaves 🍃 | 2 whole | For subtle herbal notes |
| Sea Salt 🧂 | 1 ½ tsp | Diamond Crystal preferred |
| Black Peppercorns 🌶️ | ½ tsp | Freshly cracked |
| Fresh Thyme Leaves 🌿 | 1 tbsp | Or 1 tsp dried thyme |
| Lemon Juice 🍋 | 1 tbsp | Freshly squeezed |
The navy beans are the heart of this soup—dried beans develop richer flavor than canned, but if short on time, rinsed canned beans work in a pinch. For the onions, yellow onions caramelize beautifully, but red onions add a subtle sweetness. Garlic cloves should be fresh, with a vibrant color and no sprouting. Russet potatoes are ideal for their creamy texture, but Yukon Golds hold their shape slightly better. Whole Foods or Trader Joe's carry excellent organic options for all these staples. When selecting beans, look for plump, firm beans with no cracks or discoloration—these will soften evenly.
No smoked paprika? A pinch of liquid smoke or extra cumin adds depth. Fresh thyme elevates the dish, but dried thyme works at one-third the amount. Tomato paste can be substituted with 1/4 cup tomato sauce if unavailable. For a smoother texture, blend half the finished soup before serving. Vegetable broth should be low-sodium to control seasoning—Imagine or Pacific Foods brands are excellent choices. If you prefer a lighter broth, reduce the amount to 5 cups and add an extra 1/2 cup water. Lemon juice brightens the soup at the end—Meyer lemons offer a subtle sweetness, but regular lemons work fine.
This soup tastes even better the next day as flavors meld. Store in an airtight container in the fridge for up to 5 days. For longer storage, freeze in portion-sized containers for up to 3 months. To reheat, simmer gently on low heat, adding a splash of water if needed. Portion into meal prep containers with a side of crusty bread for easy lunches. The potatoes and beans will soften further upon reheating, so aim for slightly undercooked when first serving.
Why You'll Love This Recipe
- No-Fuss Overnight Soak: I’ll be real—soaking those dried navy beans the night before isn’t just a hack, it’s a lifesaver. Wake up, dump them in with the onions and garlic, simmer, and boom—no measuring, no fuss, no last-minute grocery runs. The potatoes just melt into the broth while you’re chopping the rest.
- Garlic-Potato Magic: That crispy, caramelized edge on the potatoes? Pure satisfaction. Sauté the onions and garlic in olive oil until the garlic’s golden and the onions are jammy, then toss in the potatoes—let them sizzle for five minutes before adding liquid. The contrast of tender beans and that buttery, slightly crispy potato? Ridiculously good.
- Leftovers That Don’t Suck: Between us, most soups turn into sad mush the next day. Not this one. The navy beans hold their shape, the potatoes stay firm, and the garlic-onion base just gets deeper in flavor. I’ve reheated this for lunch three times this week—no complaints, just seconds.
- Pantry Powerhouse: Honestly, if you’ve got beans, potatoes, onions, and garlic, you’re golden. No specialty ingredients, no weird substitutions—just a soup that’s hearty enough for a weeknight but feels special enough for company. (Yes, even on a Tuesday night.) And since it’s budget-friendly, I’m not guilty when I make it twice in one month.
Step-by-step instructions for hearty bean soup with potatoes
This method builds layers of flavor through careful technique—don't rush the process.
👨🍳 Step 1: Prepare the Beans and Aromatics
Begin by rinsing the 2 cups dried navy beans under cold water in a colander, then transfer them to a large bowl. Cover with plenty of cold water (at least 8 cups) and let them soak overnight—this ensures even cooking and maximum tenderness. The next morning, drain and rinse them again before using.
While the beans soak, dice the 2 whole yellow onions into small, even pieces and mince the 6 cloves garlic finely. These aromatics form the flavor foundation, so take your time to achieve uniform size. The onions should be small enough to soften completely during cooking, while the garlic should be so fine it nearly disappears into the soup.
🍳 Step 2: Sauté and Build the Flavor Base
Heat the 0.5 cup extra-virgin olive oil in a large Dutch oven over medium heat. Add the diced onions and cook for 8-10 minutes, stirring occasionally, until they become translucent and begin to caramelize at the edges. This step develops sweetness that balances the earthy beans.
Add the minced garlic and cook for 30 seconds until fragrant—don't let it brown or it'll turn bitter. Stir in the 2 tbsp tomato paste, 1 tsp smoked paprika, and 1 tsp ground cumin, cooking for another 1 minute to toast the spices and deepen their flavors. This aromatic blend forms the soul of the soup.
🥘 Step 3: Simmer the Soup Components
Add the soaked navy beans, 2 lbs cubed russet potatoes, 6 cups vegetable broth, 2 whole bay leaves, 1.5 tsp sea salt, and 0.5 tsp freshly cracked black peppercorns to the Dutch oven. Bring to a gentle boil, then immediately reduce heat to low and cover partially. Let it simmer for 45-50 minutes until the potatoes are fork-tender and the beans are nearly broken down.
Here's the thing—don't stir the soup during this time. The beans release starch that naturally thickens the broth, creating a rich, velvety texture. Stirring too much will break up the potatoes prematurely. Instead, check for doneness by piercing a potato cube with a fork—it should slide in easily with slight resistance.
⏰ Step 4: Finish and Adjust Flavors
Remove the 2 whole bay leaves and stir in the 1 tbsp fresh thyme leaves. Simmer uncovered for 5-7 minutes to allow excess moisture to evaporate and the flavors to concentrate. Taste and adjust seasoning—you may need to add more salt, especially if using low-sodium broth.
Finish with a splash of 1 tbsp freshly squeezed lemon juice, which brightens the earthy flavors and balances the richness. The acidity also helps emulsify the soup's natural fats, creating a silky mouthfeel. Let the soup rest for 10 minutes before serving—this allows the flavors to meld completely.
🍽️ Step 5: Serve with Crusty Bread
Ladle the soup into bowls and serve immediately. The potatoes should be tender but hold their shape, and the beans should be creamy with just a hint of texture. Each spoonful should deliver a perfect balance of smoky, earthy, and bright flavors.
For the best experience, pair with warm crusty bread to soak up every last drop. The soup will continue to improve as it sits, developing even deeper flavor with each passing minute. Leftovers keep well in the refrigerator for 3-4 days and taste even better reheated the next day.
Pro Tips For Making Bean Soup With Potatoes And Onion And Garlic
- SOAK BEANS TWICE: I learned this the hard way—skipping the second soak leaves navy beans tough as boot leather. After an initial 4-hour soak (or overnight), drain, rinse, then cover with fresh water again for 12 hours. The double rinse removes more starch, and the extra hydration guarantees tender beans that don’t turn to mush.
- PEEL POTATOES LAST MINUTE: I used to peel potatoes days ahead and store them in water—big mistake. Russets oxidize fast and absorb weird flavors. Peel them right before adding to the pot, then scrub them clean under cold water. This keeps them crisp inside and prevents that sad, mealy texture.
- COOK ON LOW HEAT: Yes, even if you’re impatient like me. Simmer navy beans at 180°F (90°C)—any hotter and they’ll split into a gluey mess. After 30 minutes of boiling to soften, drop the heat to the lowest setting that maintains a gentle bubble. Your future self will thank you when the beans hold their shape.
- SAUTÉ ONIONS UNTIL CARAMELIZED: Don’t just “soften” the onions—cook them until they’re deep golden, with edges almost crisp. This takes 10-12 minutes over medium heat with a splash of water to deglaze. The sweetness cuts through the earthiness of the beans and makes the whole soup sing. (Yes, even if it looks like you’re burning them.)
Storing and reheating this recipe
Refrigerator Storage
Let your bean soup cool to room temperature (no more than 2 hours) before transferring to an airtight container—I love using glass Pyrex with tight-sealing lids. Store in the fridge at 40°F or below for up to 5 days.
The flavors actually deepen overnight as the spices meld, making it even more comforting the next day. 💫
Freezer Prep Tips
For longer storage, portion the soup into freezer-safe containers or heavy-duty freezer bags, leaving 1 inch headspace for expansion. I recommend quart-sized bags for meal prep portions. Label with the date—this soup stays delicious for up to 3 months without significant texture changes. Thaw overnight in the fridge before reheating.
Stovetop Reheating
My preferred method is gentle reheating on the stovetop to preserve texture. Transfer the soup to a pot and heat over low-medium heat, stirring occasionally. Add ¼ cup water or vegetable broth if it looks too thick.
Bring to a simmer and cook for 10-15 minutes, stirring frequently to prevent sticking. Taste and adjust seasoning—soup often needs a pinch of salt after reheating. 🔥
Microwave Shortcuts
For quick reheating, transfer soup to a microwave-safe bowl and cover with a damp paper towel. Heat on 50% power in 2-minute intervals, stirring between each interval.
Avoid full power to prevent uneven heating. If the soup seems too thick after reheating, add a splash of water or broth to restore the perfect consistency.
Texture Preservation
The potatoes and beans will soften further when reheated, so aim for slightly undercooked texture when first serving. If you prefer firmer potatoes, reduce simmering time by 5-10 minutes before storing.
For extra creaminess after reheating, stir in 1 tbsp olive oil or a splash of plant-based cream. The soup's natural starches will help restore its velvety texture. ✨
Meal Prep Strategy
Divide the soup into individual meal prep containers with a side of crusty bread or crackers. Store components separately if prepping for more than 3 days to maintain freshness.
I like adding a small bag of fresh thyme** to each container—remove before reheating to preserve flavor. This makes for quick, satisfying lunches all week without sacrificing taste. 💡
Nutrition facts
Frequently asked questions
Can I use canned beans instead of dried? Yes! For convenience, use 2 (15-oz) cans of navy beans (drained and rinsed) in place of dried. Reduce the simmering time by 10-15 minutes since canned beans are pre-cooked. The texture will be slightly firmer, but still delicious. Just
How do I make this soup creamier?
Blend half the soup with an immersion blender for a velvety texture, or stir in 1/4 cup unsweetened coconut milk or 2 tbsp olive oil at the end. For extra richness, mash a few cooked potatoes directly into the pot. The natural starches from the potatoes and beans will also create creaminess as they break down during simmering.
What if my soup tastes too bland?
Start with a splash of 1 tbsp soy sauce or miso paste for umami depth, or add 1/2 tsp smoked paprika and 1/4 tsp cayenne for heat. A squeeze of lemon juice also brightens flavors. If using low-sodium broth, add an extra 1/2 tsp sea salt. Taste as you go—small adjustments make all the difference!
Can I add other vegetables?
Try 1 cup chopped carrots (add with potatoes) or 1/2 cup diced celery (sauté with onions). For heartiness, add 1 cup corn kernels or 1/2 cup diced bell peppers. Just adjust cooking times—hard vegetables need 10-15 minutes less than potatoes. Avoid leafy greens (they wilt quickly) unless adding at the very end.
Why did my potatoes turn mushy?
Overcooking or stirring too much causes mushiness. For firmer potatoes, reduce simmering time by 5-10 minutes and avoid stirring during the first 30 minutes. Cut potatoes into 1-inch cubes (not too small) and use starchy varieties like russets. If already mushy, blend half the soup and serve as a creamy version—it’ll still taste great!
