When dinner calls for something filling, these hearty soup recipes bring together tender meats, beans, vegetables, and rich broths in satisfying bowls!!
When dinner needs to be hot, substantial, and capable of keeping everyone away from snack cabinet an hour later, these hearty soup recipes are exactly what I want bubbling away on my stove!
These are not delicate little bowls that leave you wondering where dinner went. Every spoonful has real texture, plenty to chew, and broth so flavorful you will happily chase that last bit around bowl with a piece of bread!
Hearty Soup Recipes
1. Hearty Beef Barley Vegetable Soup

Servings: 6 generous servings
This is exactly what I picture when someone says hearty beef soup. You get chunks of fork-tender beef, chewy pearl barley, sweet carrots, celery, mushrooms, and a rich brown broth with just enough tomato paste and Worcestershire sauce to make everything taste as though pot has been simmering since breakfast!
Barley is particularly good here because it does not disappear into broth. It stays pleasantly chewy and soaks up beef flavor while releasing just enough starch to give soup more body.
I also use chuck rather than a very lean beef cut because a little marbling makes a noticeable difference after a long simmer. Soup night is not where I personally choose to wage war against every visible speck of fat!
Ingredients
- 1 1/4 pounds boneless beef chuck, cut into roughly 1-inch cubes
- 1 1/4 teaspoons kosher salt, divided
- 1/2 teaspoon freshly ground black pepper
- 1 tablespoon olive oil
- 1 medium yellow onion, diced
- 3 medium carrots, sliced into 1/4-inch rounds
- 2 celery ribs, diced
- 8 ounces cremini or baby bella mushrooms, sliced
- 4 garlic cloves, minced
- 2 tablespoons tomato paste
- 1 tablespoon Worcestershire sauce
- 7 cups low-sodium beef broth
- 3/4 cup pearl barley, rinsed
- 1 teaspoon dried thyme
- 1 teaspoon dried parsley
- 1 bay leaf
- 1 cup frozen peas
- 1 tablespoon chopped fresh parsley, plus more for serving
- Salt and black pepper as needed
How to Make It
Pat beef dry with paper towels before seasoning it with about 3/4 teaspoon salt and black pepper. That little drying step looks unimportant when you are hungry, but don’t skip it!
Wet beef steams instead of browning, and browned beef is where much of that rich, roasty flavor begins.
Set a large Dutch oven or heavy soup pot over medium-high heat and give it a minute to get properly hot. Add olive oil, then arrange beef in a single layer without cramming every piece into pot at once. If your pot is smaller, brown beef in two batches.
Crowding it will release a puddle of liquid, and suddenly you are boiling beef instead of searing it, which is not nearly as exciting! Let pieces sit for 2 to 3 minutes before turning, then brown several sides for about 6 to 8 minutes total. Transfer beef to a plate.
Reduce heat to medium and add onion, carrots, celery, and mushrooms. If pot looks completely dry, add another teaspoon of oil.
Cook vegetables for 7 to 8 minutes, stirring occasionally. Mushrooms will first absorb fat, then soften and release moisture. Keep going until onion looks translucent and mushrooms have begun developing browned edges.
Add garlic and cook for about 30 seconds, just until you smell it. Push vegetables aside enough to expose a little hot surface, spoon tomato paste directly onto that spot, and cook it for about 1 minute.
Tomato paste should darken from bright red toward brick red. That tiny bit of caramelization makes broth taste considerably richer.
Pour in Worcestershire sauce followed by about 1 cup beef broth. Scrape bottom thoroughly with a wooden spoon so every browned bit comes loose. Those bits belong in your soup, not permanently welded to your Dutch oven!
Return beef and any juices from plate to pot. Add remaining broth, thyme, dried parsley, bay leaf, and remaining 1/2 teaspoon salt. Bring everything to a boil over medium-high heat, then immediately reduce heat to low so soup settles into a gentle simmer.
Cover partially and simmer beef for 40 minutes. You want occasional lazy bubbles rather than aggressive boiling. Hard boiling can make beef tighten before connective tissue has time to soften.
Stir in rinsed barley and continue simmering, partially covered, for another 35 to 45 minutes. Stir every 10 minutes or so, especially later in cooking because barley likes settling near bottom. Start checking beef and barley around 35-minute mark.
Beef should separate easily when pressed with a fork, while barley should be tender but still have a slight chew.
If soup becomes thicker than you prefer, stir in 1/2 to 1 cup additional broth or hot water.
Barley keeps absorbing liquid as it sits, so I usually leave soup slightly looser than my ideal consistency when I first turn off heat.
Stir in peas and fresh parsley during final 3 to 4 minutes. Taste broth carefully. Add more salt or pepper if needed, remove bay leaf, and let soup rest for 5 to 10 minutes before serving. That short rest lets barley settle and broth thicken just a little more.
Serving Suggestions
Serve beef barley soup with thick slices of buttered sourdough, garlic toast, or a crusty baguette because that beefy broth deserves to be wiped from bowl!
A simple chopped salad with romaine, cucumber, red onion, and vinaigrette gives you a crisp contrast to all those tender ingredients.
For an extra hearty dinner, spoon soup into wide bowls and sprinkle fresh parsley and a little grated Parmesan over top. Parmesan is not traditional here, but I have yet to see anyone push bowl away in protest!
2. Creamy Chicken and Wild Rice Soup

Servings: 6 generous servings
This creamy chicken and wild rice soup lands somewhere between a traditional chicken soup and a creamy restaurant-style dinner soup, except you control how thick and rich it becomes.
Chicken thighs stay juicy during longer cooking, wild rice gives every bite a nutty chew, and carrots plus celery keep richness from becoming heavy.
I prefer half-and-half instead of using several cups of heavy cream. You still get a velvety broth, but chicken, herbs, vegetables, and wild rice remain easy to taste rather than being buried under dairy.
Ingredients
- 1 1/4 pounds boneless, skinless chicken thighs
- 1 teaspoon kosher salt, divided
- 1/2 teaspoon black pepper
- 3 tablespoons unsalted butter
- 1 medium yellow onion, finely diced
- 3 carrots, diced
- 2 celery ribs, diced
- 3 garlic cloves, minced
- 1/3 cup all-purpose flour
- 6 cups low-sodium chicken broth
- 1 cup wild rice blend, rinsed well
- 1 teaspoon dried thyme
- 1/2 teaspoon dried rosemary
- 1 bay leaf
- 1 cup half-and-half
- 1 tablespoon fresh lemon juice
- 2 tablespoons chopped fresh parsley
- Additional salt and pepper as needed
How to Make It
Season chicken thighs with 1/2 teaspoon salt and black pepper, then set a large heavy soup pot over medium heat. Melt butter and add onion, carrots, and celery. Cook for 6 to 7 minutes, stirring often, until onion softens and edges of carrots begin looking slightly glossy.
Add garlic and cook for about 30 seconds. Sprinkle flour evenly over vegetables and stir continuously for 1 to 2 minutes.
At first mixture may look slightly pasty, which is exactly what you want. Cooking flour briefly removes its raw taste without allowing it to brown heavily.
Begin pouring chicken broth into pot about 1 cup at a time, stirring well after each addition.
First cup will become quite thick almost immediately. Keep stirring and gradually add more broth until mixture relaxes into a smooth soup base.
Add rinsed wild rice, thyme, rosemary, bay leaf, remaining salt, and chicken thighs. Increase heat until soup reaches a gentle boil, then reduce to low and partially cover pot.
Simmer for about 40 to 50 minutes, stirring every 8 to 10 minutes. Wild rice blends vary, so package timing can differ slightly. What matters more than clock is what you see and taste.
Rice should be tender with a little chew, carrots should be soft enough to cut easily with edge of spoon, and chicken should be fully cooked.
Check chicken with an instant-read thermometer in its thickest section. Poultry should reach at least 165°F for food safety. Once it reaches that point, transfer chicken to a plate and shred or chop it into bite-size pieces.
Return chicken to pot, stir in half-and-half, and keep soup over low heat for another 4 to 5 minutes. Do not blast it with high heat once dairy goes in. A calm simmer keeps texture smooth.
Soup should now coat spoon lightly while still flowing easily. If it looks more like casserole filling than soup, add another splash of broth. If it feels too thin, simmer uncovered for 5 additional minutes.
Finish with lemon juice and parsley. Lemon is not there to make soup taste lemony. It simply wakes up creamy broth and keeps every spoonful from feeling too rich.
Taste before adding extra salt because broth brands vary enormously. Remove bay leaf, then let soup sit for about 5 minutes before serving.
Serving Suggestions
Serve it with warm dinner rolls, biscuits, garlic bread, or toasted sourdough. Creamy broth and crusty bread have been friends for a reason!
A spinach salad with apples, pecans, and a sharp vinaigrette works beautifully alongside rich chicken and rice.
For a simple finish, add cracked black pepper, parsley, and a few thin curls of Parmesan to each bowl.
If you are serving children who regard visible herbs as suspicious evidence, parsley can remain entirely optional!
3. Italian Sausage, Lentil and Spinach Soup

Servings: 6 servings
If you want a hearty soup without cream, this sausage and lentil version earns its place immediately.
Savory sausage seasons broth as it cooks, brown lentils turn tender without becoming completely mushy, tomatoes add acidity, and spinach goes in at last minute so soup still tastes fresh.
This is also one of my favorite recipes for people who think lentil soup sounds a little too responsible to be exciting! Sausage, garlic, oregano, Parmesan, and tomato paste take care of that problem rather quickly.
Ingredients
- 1 pound mild or hot Italian pork sausage, casings removed if necessary
- 1 tablespoon olive oil, only if sausage is very lean
- 1 medium yellow onion, diced
- 2 carrots, diced
- 2 celery ribs, diced
- 4 garlic cloves, minced
- 2 tablespoons tomato paste
- 1 teaspoon dried oregano
- 1/2 teaspoon dried basil
- 1/4 teaspoon crushed red pepper flakes, optional
- 1 cup brown or green lentils, rinsed and picked over
- 1 can, 14.5 ounces, diced tomatoes
- 6 cups low-sodium chicken broth
- 1 Parmesan rind, optional
- 4 packed cups baby spinach
- 1 tablespoon balsamic vinegar
- 1/3 cup freshly grated Parmesan
- Salt and black pepper as needed
How to Make It
Place a large soup pot over medium-high heat and add sausage. If your sausage is especially lean, add olive oil first.
Break meat into small and medium crumbles with a wooden spoon, but resist pulverizing it into tiny grains. Larger crumbles make soup feel much more substantial.
Cook sausage for 6 to 8 minutes, turning and breaking pieces as needed, until browned and cooked through. Ground meat and sausage should reach 160°F for food safety.
Transfer sausage to a plate if more than a tablespoon or so of fat has accumulated, spoon off excess, then return meat to pot. If fat level already looks reasonable, simply leave sausage where it is.
Add onion, carrots, and celery. Cook over medium heat for 6 to 7 minutes. You should begin seeing brown bits mixing with softened vegetables, and onion should lose its raw white appearance.
Stir in garlic, tomato paste, oregano, basil, and red pepper flakes. Cook for about 1 minute, stirring constantly. Your kitchen should smell unmistakably like dinner at this point!
Add lentils, diced tomatoes with their juices, chicken broth, and Parmesan rind if using. Scrape bottom of pot thoroughly, bring soup to a boil, then reduce heat to low.
Partially cover and simmer for 30 to 35 minutes. Stir every 10 minutes and begin checking lentils around 25-minute mark. Brown and green lentils should become tender while keeping their general shape.
I do not recommend using red lentils as a straight substitution here. Red lentils soften much faster and break apart, which gives you an entirely different texture. Delicious, yes, but no longer this soup.
When lentils are tender, remove Parmesan rind and stir in spinach a couple handfuls at a time. It may look as if you accidentally bought enough spinach for a salad bar, but give it 2 minutes! Leaves will collapse dramatically into hot broth.
Stir cooked sausage through soup if you removed it earlier, then add balsamic vinegar and grated Parmesan. Let everything simmer for 2 to 3 minutes.
Taste broth. Sausage, Parmesan, and broth already contribute salt, so this is one recipe where I strongly prefer seasoning at end rather than confidently throwing extra salt in at beginning and regretting my enthusiasm later!
Soup should be thick with lentils and sausage but still have enough broth to spoon easily. Add 1/2 cup broth if it needs loosening.
Serving Suggestions
Serve with garlic bread, focaccia, or toasted Italian bread brushed with olive oil.
Add Parmesan generously at table along with cracked black pepper and crushed red pepper flakes.
For something fresh on side, serve a simple arugula salad with lemon vinaigrette.
You can also spoon a little basil pesto into each bowl right before serving. One teaspoon per serving is plenty to add basil, garlic, and Parmesan flavor without overpowering soup.
4. Hearty Chicken Corn Chowder with Bacon and Potatoes

Servings: 6 to 8 servings
This chicken corn chowder is unapologetically chunky! Every bowl has chicken, sweet corn, tender potatoes, smoky bacon, onion, celery, and a creamy broth thick enough to cling to everything without turning into gravy.
Corn brings natural sweetness, bacon brings smoke and salt, and potatoes do a lot of work here.
Some stay in cubes while a few get gently mashed against side of pot near end, which thickens broth naturally and gives you that spoon-coating chowder texture.
Ingredients
- 6 slices bacon, chopped
- 1 medium yellow onion, diced
- 2 celery ribs, diced
- 1 small red bell pepper, diced
- 3 garlic cloves, minced
- 1/4 cup all-purpose flour
- 4 cups low-sodium chicken broth
- 1 1/4 pounds Yukon Gold potatoes, cut into 1/2-inch cubes
- 1 teaspoon smoked paprika
- 1/2 teaspoon dried thyme
- 1/2 teaspoon kosher salt, plus more as needed
- 1/4 teaspoon black pepper
- 1 1/4 pounds boneless, skinless chicken breasts or thighs
- 4 cups corn kernels, fresh or frozen
- 2 cups whole milk
- 1/2 cup heavy cream
- 2 green onions, thinly sliced
- 1 tablespoon chopped fresh parsley
How to Make It
Add chopped bacon to a cold Dutch oven, then place pot over medium heat. Starting bacon in a cold pan helps fat render gradually instead of immediately scorching outside edges.
Cook for 7 to 9 minutes, stirring occasionally, until bacon becomes crisp.
Transfer bacon to a paper towel-lined plate, leaving about 2 tablespoons rendered fat in pot. If you have substantially more, spoon some out.
Add onion, celery, and bell pepper to bacon fat. Cook for 6 minutes over medium heat until vegetables soften. Add garlic and cook for another 30 seconds.
Sprinkle flour across vegetables and stir constantly for about 1 minute. It should coat vegetables and absorb bacon fat.
Slowly pour in chicken broth while stirring. Add a little first, scrape bottom well, then continue adding broth. Gradual pouring makes a smoother chowder base and prevents little flour lumps from floating around like unwanted dumplings.
Add potatoes, smoked paprika, thyme, salt, pepper, and chicken. Bring soup to a gentle boil, reduce heat to low, partially cover, and simmer for 15 to 20 minutes.
Cooking time depends on potato size and whether you use chicken breasts or thighs, so trust your thermometer and fork rather than one rigid number.
Chicken should reach at least 165°F internally. Potatoes should offer almost no resistance when pierced with a fork.
Once chicken is cooked, transfer it to a cutting board and let it rest for several minutes. Chop or shred it into bite-size pieces.
Before returning chicken, press about 1 cup worth of potatoes lightly against side of pot with a wooden spoon. You are not trying to puree chowder. Just mash enough potato to release starch and thicken broth.
Stir chicken back in along with corn. If using frozen corn, there is no need to thaw it first. Simmer for 5 minutes.
Reduce heat to low, stir in whole milk and heavy cream, and cook for another 4 to 5 minutes.
Keep heat gentle after dairy goes into pot. Chowder should become creamy and steamy but does not need a hard boil.
Add about two-thirds of cooked bacon, reserving remaining bacon for garnish. Taste and adjust salt or pepper. Remember bacon gets saltier in your perception once it sits on top, so season with a reasonably light hand.
If chowder gets thicker than expected, add 1/2 cup chicken broth or milk. If it seems thin, simmer uncovered for another few minutes or mash a few more potato pieces.
Finish with green onions and parsley right before serving.
Serving Suggestions
Top each bowl with reserved crispy bacon, green onions, shredded cheddar, and black pepper.
Serve with cornbread if you want to lean into sweet corn flavor. A warm square of buttery cornbread next to chowder is never a bad decision!
A crisp cabbage slaw makes an excellent side because acidity and crunch cut through creamy broth.
For a fuller spread, serve chowder with toasted ham and cheese sandwiches cut into halves for dipping.
5. Thick Tuscan White Bean, Potato and Kale Soup

Servings: 6 servings
This white bean potato soup proves a hearty dinner soup does not need meat to have serious substance.
Cannellini beans make broth naturally creamy, Yukon Gold potatoes give you buttery chunks, kale adds freshness, garlic and rosemary perfume every spoonful, and Parmesan gives broth a savory finish.
Secret to its texture is very simple: mash one portion of beans before adding them. You get a thick, almost creamy broth without needing cups of heavy cream, while remaining beans stay whole so every bite still has texture.
Ingredients
- 2 tablespoons olive oil
- 1 medium yellow onion, diced
- 3 carrots, diced
- 2 celery ribs, diced
- 5 garlic cloves, minced
- 1 tablespoon tomato paste
- 1 teaspoon dried rosemary
- 1/2 teaspoon dried thyme
- 3 cans, 15 ounces each, cannellini beans, drained and rinsed
- 6 cups low-sodium vegetable broth
- 1 1/4 pounds Yukon Gold potatoes, cut into 1/2-inch cubes
- 1 Parmesan rind, optional
- 4 cups chopped kale, tough stems removed
- 1/2 cup freshly grated Parmesan cheese
- 1 tablespoon fresh lemon juice
- 1/2 teaspoon kosher salt, plus more as needed
- 1/4 teaspoon black pepper
- Crushed red pepper flakes, optional
How to Make It
Set a large Dutch oven over medium heat and add olive oil. Stir in onion, carrots, and celery, then cook for about 7 minutes. Vegetables do not need heavy browning here. You are looking for softened edges and an onion that has turned translucent.
Add garlic, tomato paste, rosemary, and thyme. Stir for 1 minute. Tomato paste will cling to vegetables at first, then darken slightly as it cooks.
Place one can of drained cannellini beans in a bowl with about 1 cup vegetable broth. Mash with a potato masher or fork until you have a chunky puree.
It does not need to become perfectly smooth. In fact, a few bean pieces make soup feel more homemade and less like it came through a laboratory-grade blender!
Pour mashed bean mixture into pot along with remaining whole beans, remaining broth, potatoes, Parmesan rind, salt, and black pepper.
Bring soup to a boil over medium-high heat, then reduce heat until you see a gentle simmer. Partially cover and cook for 18 to 22 minutes, stirring occasionally.
Begin checking potatoes around 18-minute mark. Yukon Gold cubes should hold their shape but crush easily when pressed with back of spoon. If you cut larger cubes, expect a few extra minutes.
Once potatoes are tender, use your spoon to mash five or six pieces against side of pot. This is another small trick that gives broth extra body without changing soup into puree.
Add kale and stir well. At first it will sit above broth looking far too ambitious. Keep stirring for 3 to 5 minutes and leaves will soften considerably.
Remove Parmesan rind, then stir grated Parmesan into hot soup a little at a time. Keep heat low while cheese melts. Add lemon juice and taste.
Lemon may seem like a strange final ingredient in bean and potato soup, but do not leave it out unless you absolutely need to. Beans, potatoes, and Parmesan are all mellow ingredients, and a tablespoon of acidity sharpens those flavors without turning soup sour.
If broth has become too thick, add another 1/2 cup vegetable broth. If you want it thicker, mash a few additional beans or potatoes and simmer uncovered for 3 to 4 minutes.
Finish with black pepper and crushed red pepper flakes if you enjoy a little heat.
Serving Suggestions
Serve with toasted sourdough rubbed with a cut garlic clove and drizzled lightly with olive oil.
Add extra Parmesan and cracked pepper to each bowl. A small drizzle of good olive oil over top is excellent too.
A tomato and cucumber salad with red wine vinaigrette gives you something crisp and acidic alongside thick beans and potatoes.
For an even more substantial dinner, make grilled cheese sandwiches with mozzarella and Parmesan and serve them beside soup for dipping!
Whichever one you choose, these hearty soup recipes were made for evenings when a thin little cup of broth simply will not cut it. Ladle soup into your biggest bowls, bring bread to table, add plenty of toppings, and call dinner done!
Hungry for more feel-good meals? Explore these 21 Anti-Inflammatory Breakfast Recipes for a nourishing start and 10 Anti-Inflammatory Dinner Recipes for delicious evenings that make healthy eating easy!




