Soups & Stews
This bean soup from scratch recipe transforms simple dried beans into a hearty, flavorful masterpiece that rivals restaurant-quality versions. The secret lies in proper soaking and slow simmering, which develops deep, complex flavors that store-bought versions simply can't match.
I've perfected this method over years of testing, ensuring every spoonful delivers that satisfying combination of tender beans and rich broth.
The process begins with overnight soaking to soften the beans, followed by sautéing aromatic vegetables that form the flavor base. A 30-minute simmer on the stovetop (or 20 minutes in a pressure cooker) transforms humble ingredients into a velvety soup with perfectly tender beans.
The result is a comforting dish that's equally satisfying as a light lunch or substantial dinner.
What makes this recipe truly special is its adaptability—you can customize it with herbs, spices, or vegetables to suit your taste. The foolproof method ensures consistent results every time, while the slow cooking process allows flavors to meld beautifully.
Whether you're a beginner or experienced cook, this soup delivers restaurant-quality comfort at home.
Serve with crusty bread to soak up every drop of that flavorful broth, or pair it with a simple green salad for a complete meal. The leftovers actually improve overnight, making this an ideal make-ahead dish for busy weeks. Let's create this classic bean soup from scratch!
Ingredients for bean soup from scratch
Transform humble dried beans into restaurant-quality richness with these carefully chosen ingredients.
| Ingredient | Amount | Notes |
|---|---|---|
| Dried Navy Beans 🌱 | 2 cups | Uncooked, rinsed thoroughly |
| Yellow Onion 🧅 | 1 whole | Medium-sized, diced finely |
| Carrots 🥕 | 3 medium | Peeled, cut into 1/4-inch slices |
| Celery Stalks 🌿 | 3 whole | Trimmed, cut into 1/4-inch pieces |
| Garlic Cloves 🧄 | 4 cloves | Peeled, minced finely |
| Tomato Paste 🍅 | ½ cup | High-quality, unsweetened |
| Vegetable Broth 💧 | 6 cups | Low-sodium preferred |
| Olive Oil 🫒 | ¼ cup | Extra-virgin for richness |
| Bay Leaves 🌿 | 2 whole | Dried, standard size |
| Thyme Sprigs 🌿 | 2 whole | Fresh or dried |
| Salt 🧂 | 1 ½ tsp | Diamond Crystal preferred |
| Black Peppercorns 🌶️ | ½ tsp | Freshly cracked |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for garnish |
| Lemon Juice 🍋 | 1 tbsp | Freshly squeezed |
The beans form the heart of this soup, so quality matters. Navy beans are ideal for their creamy texture, but cannellini or pinto beans work equally well. For the best flavor, rinsed dried beans (not canned) are essential—they absorb flavors better. I always source mine from Whole Foods bulk section or Trader Joe's for consistent quality. The vegetables should be fresh but firm—carrots with vibrant orange color and celery with crisp stalks ensure optimal flavor development during simmering. For the broth, low-sodium vegetable broth prevents over-salting later.
No fresh thyme? Dried thyme at one-third the amount works perfectly. The tomato paste can be substituted with 1 can (14 oz) crushed tomatoes if preferred, though paste provides deeper flavor. For a smokier profile, add 1 tsp smoked paprika. The lemon juice brightens the soup—bottled lemon juice works in a pinch, but fresh is ideal. If using dried beans, overnight soaking reduces cooking time significantly. For a quicker version, use quick-soak method (boil 2 minutes, then rest 1 hour). The olive oil should be extra-virgin for optimal flavor—regular olive oil lacks the fruity depth.
This soup improves with time—flavors meld beautifully overnight. Store in an airtight container in the fridge for up to 5 days, or freeze for 3 months. For reheating, add a splash of water or broth to prevent thickening. The beans will soften further, intensifying their flavor. Garnish with fresh parsley just before serving to maintain vibrant color. For meal prep, double the recipe—leftovers make perfect lunches or can be blended into a velvety bean dip.
Why You'll Love This Recipe
- Here’s what sold me: the navy beans’ earthy richness paired with caramelized onions and garlic that sing when simmered low. The celery adds this subtle crunch that makes every spoonful feel like a hug—especially when you’re tired and just need something good.
- Soak-and-Go Simplicity: I swear by this trick—just toss the dried navy beans in water the night before, and wake up to half the work done. No fancy gadgets, no stress: chop the onion, celery, and carrots (roughly, no one’s judging), toss everything in a pot, and let the stove do the heavy lifting. That’s it.
- Umami Bomb Combo: Here’s what sold me: the navy beans’ earthy richness paired with caramelized onions and garlic that sing when simmered low. The celery adds this subtle crunch that makes every spoonful feel like a hug—especially when you’re tired and just need something good.
- Leftovers That Beg for More: Between us, this soup only gets better after day two. The flavors meld into something deeply satisfying, and it’s the kind of meal that disappears faster than you can say “second bowl.” I make a big batch on Sundays and freeze portions—perfect for lazy nights or when company drops by unannounced.
Step-by-step instructions for homemade bean soup
Transforming simple dried beans into rich, flavorful soup requires patience and technique.
👨🍳 Step 1: Prepare and Soak the Dried Navy Beans
Rinse the 2 cups dried navy beans thoroughly under cold water to remove any debris. Place them in a large bowl and cover with plenty of cold water by at least 2 inches. Let them soak overnight at room temperature—this ensures even cooking and reduces digestion issues later. I always use a colander to drain them before adding to the pot.
The key here is proper hydration. After soaking, the beans should feel plump and slightly softened when pressed between fingers. If you're short on time, you can use the quick-soak method: boil the beans for 2 minutes, then let them sit off heat for 1 hour before cooking. Never skip soaking—it's what transforms tough dried beans into tender, flavorful soup.
🍳 Step 2: Sauté the Aromatic Vegetables
Heat the 0.25 cup olive oil in a large pot over medium heat. Add the finely diced yellow onion, 3 medium carrots cut into 1/4-inch slices, and 3 whole celery stalks cut into 1/4-inch pieces. Cook for 8-10 minutes, stirring occasionally, until the vegetables soften and the onion becomes translucent. This process builds the foundation of your soup's flavor.
Here's where it gets important: don't let the vegetables brown too much. You want them to soften rather than caramelize at this stage. Add the 4 cloves minced garlic and cook for an additional 30 seconds until fragrant. This quick cooking preserves the garlic's bright flavor rather than letting it burn. The vegetables should release their natural juices, creating a flavorful base for your soup.
🥘 Step 3: Develop the Flavor Base
Stir in the 0.5 cup tomato paste and cook for 2-3 minutes until it darkens slightly and coats the vegetables. This step deepens the soup's color and adds a rich, umami foundation. Add the 2 whole bay leaves and 2 whole thyme sprigs, then pour in the 6 cups vegetable broth. Bring everything to a gentle boil, then reduce heat to maintain a steady simmer.
Now add the drained navy beans and 1.5 tsp salt. The beans should be just covered by the liquid—if not, add a bit more broth. Let the soup simmer uncovered for 45-60 minutes, stirring occasionally. You'll know it's ready when the beans are tender but still hold their shape. I check for doneness by tasting a bean—it should be soft but not mushy.
⏰ Step 4: Season and Finish
Once the beans are tender, stir in the 0.5 tsp freshly cracked black peppercorns. Let the soup simmer for another 10 minutes to allow the flavors to meld. Taste and adjust the seasoning if needed—you might need a bit more salt depending on your broth. Remove the bay leaves and thyme sprigs at this point.
For the final touch, stir in the 1 tbsp freshly squeezed lemon juice. This brightens the soup and cuts through the richness. The acidity also helps break down any remaining starches in the beans, ensuring a smooth texture. Let the soup sit off heat for 5 minutes before serving—this allows the flavors to fully integrate.
🍽️ Step 5: Serve with Fresh Garnish
Ladle the soup into bowls and garnish each serving with 1 tablespoon of the chopped fresh parsley. The parsley adds a fresh, bright contrast to the rich bean soup. Serve immediately while hot, as the flavors continue to develop even after cooking. This homemade bean soup delivers a depth of flavor you simply can't achieve with canned beans.
The result should be a velvety soup with tender beans, vibrant vegetables, and a perfect balance of savory and bright flavors. Each spoonful should showcase the natural sweetness of the carrots, the earthiness of the beans, and the aromatic complexity of the herbs. The lemon juice ensures the soup finishes with a refreshing lift rather than feeling heavy.
Pro Tips For Making Bean Soup From Scratch
- SOAK BEANS OVERNIGHT: I learned this the hard way—rushing soaks with hot water just skins the beans instead of softening them. Cold water overnight (or at least 8 hours) breaks down the starches properly, so they cook evenly without that chalky bite. No soaking? Cover them with fresh water, bring to a boil for 2 minutes, then simmer 1 hour before adding to the soup.
- SWEEP THE POT: After draining the beans, don’t just dump them back in. Scrape up those stuck-on bits with a wooden spoon—those caramelized bean bits are flavor gold. A quick 30-second wipe with a damp paper towel keeps your soup from tasting like it’s been simmering in the same pot since 1987.
- CHAR THE AROMATICS: Skip the gentle sauté—crank the heat to medium-high and cook the onions, carrots, and celery until they’re deep golden, not just soft. The celery especially needs 5-7 minutes to develop that nutty, almost burnt edge. (Yes, it’ll smell like your kitchen’s on fire—good.) This builds the soup’s depth way more than a slow simmer ever will.
- SAVE THE SOAK WATER: That starchy soak water isn’t trash—it’s free seasoning. Strain it, taste it, and add it back to the pot if the soup tastes bland. It’s got dissolved bean goodness that’ll round out the flavors without needing extra salt. (Your future self will high-five you when you remember this.)
Serving suggestions for this dish
Bread Pairings
Crusty sourdough bread is my go-to pairing—its tangy crumb perfectly complements the soup's earthy flavors. I recommend artisan-style sourdough from local bakeries or a baguette cut into thick slices. For extra indulgence, toast the bread with garlic-infused olive oil and sprinkle with flaky sea salt before serving. 🥖
Salad Contrasts
A simple arugula salad with lemon vinaigrette lightens the meal beautifully. Toss 4 cups baby arugula with 2 tbsp extra-virgin olive oil, 1 tbsp fresh lemon juice, and a pinch of himalayan pink salt.
Add ¼ cup shaved parmesan for a salty contrast that cuts through the soup's richness.
Cheese Accompaniments
For a heartier meal, serve with aged cheddar cubes or manchego slices. The sharp, nutty flavors of aged cheddar (like Cabernet Sauvignon) pair wonderfully with the soup's depth.
I also love goat cheese crostini—spread 2 oz goat cheese on toasted baguette slices, drizzle with honey, and top with thinly sliced pear.
Toppings for Extra Flavor
Let guests customize their bowls with these toppings: crumbled feta, toasted pine nuts, avocado slices, or pickled red onions. I keep a small bowl of each on the table so everyone can build their perfect serving.
The pickled onions add a tangy crunch that balances the soup's heartiness.
Warm vs. Cold Serving
Serve the soup piping hot for maximum comfort, but I also love offering a small pitcher of chilled vegetable broth on the side. A few spoonfuls of cold broth can refresh the palate between bites, especially when paired with spicy toppings.
For a winter meal, serve with a bowl of steaming broth alongside the soup.
Dessert Pairings
Finish the meal with something light to balance the richness. A lemon sorbet or orange-infused olive oil cake cleanses the palate beautifully. For a savory option, try whipped feta with honey and walnuts—the sweetness contrasts perfectly with the soup's earthy flavors. 🍋
Nutrition facts
Frequently asked questions
Why do I need to soak dried beans overnight?
Overnight soaking is essential for two reasons: it reduces cooking time by 30-50% and prevents those tough, indigestible beans. The beans absorb water and soften, allowing them to cook evenly. For a quicker version, try the quick-soak method: boil beans for 2 minutes, then let them sit off heat for 1 hour before cooking. Never skip soaking—it's what transforms tough dried beans into tender, flavorful soup.
Can I substitute canned beans for dried beans?
Yes, but you'll lose that deep, developed flavor from slow-cooking dried beans. If using canned beans, drain and rinse them well to remove excess sodium. For best results, add them to the soup during the last 10 minutes of cooking to prevent mushiness. Canned beans work in a pinch, but dried beans create a richer, more complex broth through their long simmering process.
How do I know when the beans are fully cooked?
Test for doneness by tasting a bean—it should be soft but still hold its shape (not mushy). For visual confirmation, cut one open: the center should be creamy, not firm. Total cooking time after soaking is typically 45-60 minutes on medium-low heat. Overcooking turns beans to mush, so check frequently after 40 minutes. A wooden spoon test works too: press a bean against the pot side—it should crush easily but not turn to paste.
What if my soup tastes too thick after cooking?
Add ½ cup hot broth at a time while stirring until you reach your desired consistency. If the soup is too thin, simmer uncovered for 10-15 minutes longer to reduce. For extra richness, mash 2-3 beans against the pot side to release starches, then stir well. The soup should coat the back of a spoon but still be easy to ladle. Never add flour—it changes the texture completely.
Can I make this soup in an Instant Pot?
Use the same ingredients but adjust the cooking time: sauté vegetables as directed, then add all remaining ingredients (including beans) and cook on high pressure for 10 minutes. Let pressure release naturally for 10 minutes before quick-release. The Instant Pot reduces cooking time to about 30 minutes total. For extra flavor, add 1 cup water instead of broth during pressure cooking. The result is just as rich but much faster!
