Hearty Ham and Bean Soup
, Published Oct 11, 2026
This post may contain affiliate links. Please read our disclosure policy.
This easy Ham and Bean Soup is a firm favorite in our house – thick, savory and packed with creamy cannellini beans, potato and tender ham. It tastes like it’s been simmering for hours, but it’s made with canned beans, so it can be ready and on the table in about an hour.

Ham and bean soup is a classic for a reason – hearty, warming, stick-to-your-ribs comfort food that’s thrifty and can feed a crowd. It’s a fantastic way to use up leftover ham and the stock created from braising the ham if you have it available.
I created this recipe to use up the cooked ham and stock left over from my Braised Ham Hock, adding canned beans, potato and spinach to stretch this to a meal happily serving 6–8. I have also included options for adding a ham bone, swapping in dried beans, fixing a soup that is too salty and so much more!

Table of Contents
Here’s What You’ll Need
This soup is really versatile – you can use leftover ham and improvise with different types of beans and vegetables.
- Stock – ideally the strained braising liquid from cooking a ham hock or gammon. No ham stock? Use low-sodium chicken broth in place of both the stock and the water.
- Water – it may seem odd to add so much water, but stock made from cured ham is usually quite salty and simmering reduces it so the saltiness intensifies. You can adjust this if using chicken broth or low-sodium stock.
- Cannellini beans – five cans, drained and rinsed. Cannellini are large, creamy and hold their shape. Navy beans (haricot beans) or great northern beans work just as well, and butter beans are a good option in the UK.
- Ham – about 1 lb (450g) of cooked ham, shredded or diced. Leftover baked ham or gammon is perfect (my Slow Cooker Gammon and Air Fryer Gammon both work well), and so is the meat pulled from a braised ham hock.
- Onion, celery and garlic – the fresh vegetables that start the soup.
- Carrots – use the soft carrots from the braise if available, otherwise dice some fresh carrots. Either way, they go in with the onion and celery.
- Potato – one floury potato, diced small. It breaks down a little as it cooks and helps thicken the soup.
- Tomato paste (tomato purée) – It adds depth and a little color without making the soup taste of tomato.
- Spinach – 3 cups of fresh spinach, stirred in at the end so it just wilts.
- Sour cream – for creaminess and tang! This also helps balance out the salt if needed.

Why You’ll Love It
- Big flavor, short cook: Cooked ham and ham stock do the heavy lifting, so the soup only needs a gentle simmer.
- Thrifty: It uses up leftover ham, the stock and even the ham bone, so nothing is wasted.
- Pantry friendly: Canned beans, an onion, a potato and a spoonful of tomato paste.
- Feeds a crowd: One pot serves 6–8, and it freezes beautifully.
- Flexible: Canned or dried beans, leftover holiday ham or hock meat, ham stock or chicken broth.
How to Make This Ham and Bean Soup Recipe
↓ For the full ingredients and detailed method, jump to the recipe card.
Cook the Vegetables
- Heat a little olive oil in a large Dutch oven or soup pot over medium heat. Add the diced onion, celery, carrots and potato and cook for 6–8 minutes, stirring occasionally, until softened.
- Stir in the garlic and tomato paste and cook for 1 minute, until it darkens slightly.

Simmer
- Add the diced ham, stock, water, beans and bay leaves. Bring to a rolling simmer, then turn the heat down low and cook for 30–40 minutes.

Thicken and Season
- Discard the bay leaves. For a thicker, creamier soup, mash some of the beans and potato against the side of the pot with a wooden spoon, or blend a couple of ladlefuls with an immersion blender and stir them back in.
- Add the spinach and stir it into the hot soup so that it wilts. Take off the heat and stir in the sour cream if using.

- Taste the soup before you season. Add plenty of black pepper, and salt only if it needs it – it usually will not.
- Ladle into bowls and finish with chopped parsley and a pinch of red pepper flakes.

Serving Suggestions
This is a meal in a bowl, so all it really needs is good bread for dunking.
- Bread – Guinness Bread, Quick Sourdough Bread or warm Air Fryer Dinner Rolls, or a grilled cheese sandwich made with Sourdough Sandwich Bread.
- Toppings – chopped parsley, a drizzle of good olive oil, grated Parmesan, chili flakes or a spoonful of sour cream.
- On the side – a crisp green salad with a sharp dressing to cut through the richness.
Using a Ham Bone
If you have the bone from a baked ham or a Braised Ham Hock, don’t throw it away – it is full of flavor and turns this into an even better ham bone and bean soup.
- Add it with the liquid: Put the bone in the pot along with the stock and water and let it simmer with the soup.
- Give it longer if you can: 30–40 minutes is enough, but simmering for up to an hour draws out more flavor. Add a splash of water if the soup gets too thick.
- Lift it out: Remove the bone before you thicken the soup, pick off any meat and stir it back in.
- No ham stock? A meaty bone goes a long way to making up for it. Use low-sodium chicken broth for the liquid and taste before seasoning.
How to Fix Soup That Is Too Salty
Ham stock, ham and canned beans all bring their own salt, and the soup gets saltier as it simmers and reduces. Leave the salt out completely until the soup is finished, then taste and decide. If your soup still manages to be too salty you can fix it using the following methods:
- Dilute it: This is the only method that actually removes saltiness. Stir in a cup (250ml) of water or unsalted stock at a time, tasting as you go.
- Bulk it out: Add another can of rinsed, no-salt-added beans or a second diced potato and simmer until tender. More unsalted ingredients means less salt in every spoonful.
- Add acid: A squeeze of lemon juice or a teaspoon of apple cider vinegar does not remove salt, but it balances it and makes the soup taste brighter.
- Add something creamy: A splash of heavy cream (double cream) or a couple of spoonfuls of sour cream in each bowl softens the saltiness.
- Serve it with something plain: Unsalted crusty bread, rice or a baked potato will balance a soup that is only a little too salty.
What about the potato trick? You will often read that a whole raw potato dropped into the pot will absorb the salt. It does not really work – the potato soaks up salty liquid, not just salt. Adding extra diced potato and leaving it in the soup helps a little, simply because it adds bulk.

More Soup Recipes
- Slow Cooker Pea and Ham Soup
- Hearty Chicken Vegetable Soup
- Creamy Leftover Turkey and Wild Rice Soup
- Marry Me Chicken Soup
Please leave a comment and rating if you try this recipe, follow me on Pinterest for more easy recipes and don’t forget to tag me on @Instagram or TikTok so I can see your creations.

Hearty Ham and Bean Soup
Ingredients
- 2 tbsp olive oil
- 1 large onion diced
- 3 stalks celery diced
- 3 large carrots diced – use the soft carrots from braising the ham if you have them
- 2 cloves garlic minced
- ½ tbsp tomato paste
- 1 cup (250ml) ham stock the strained braising liquid from a ham hock, fat skimmed see note 1
- 8 cups (2 liters) water see note 1
- 5 cans cannellini beans 15 oz (400g) cans, drained and rinsed
- 1 lb (450g) cooked ham shredded or diced
- 1 large potato peeled and diced small
- 2 bay leaves
- 3 cups fresh spinach
- 4 tbsp sour cream or more, to taste (optional)
- black pepper to taste
- 2 tbsp parsley to serve
- 1 pinch red pepper flakes to serve
Instructions
Cook the vegetables
- Heat a little olive oil in a large Dutch oven or soup pot over medium heat. Add the diced onion, celery, carrots and potato and cook for 6–8 minutes, stirring occasionally, until softened.2 tbsp olive oil, 1 large onion, 3 stalks celery, 3 large carrots
- Stir in the garlic and tomato paste and cook for 1 minute, until it darkens slightly.½ tbsp tomato paste, 2 cloves garlic
Simmer
- Add the diced ham, stock, water, beans and bay leaves. Bring to a rolling simmer, then turn the heat down low and cook for 30–40 minutes.1 cup (250ml) ham stock, 8 cups (2 liters) water, 5 cans cannellini beans, 1 lb (450g) cooked ham, 2 bay leaves, 1 large potato
Thicken and season
- Discard the bay leaves. For a thicker, creamier soup, mash some of the beans and potato against the side of the pot with a wooden spoon, or blend a couple of ladlefuls with an immersion blender and stir them back in.
- Add the spinach and stir it into the hot soup so that it wilts. Take off the heat and stir in the sour cream if using.3 cups fresh spinach, 4 tbsp sour cream
- Taste the soup before you season. Add plenty of black pepper, and salt only if it needs it – it usually will not.black pepper
- Ladle into bowls and finish with chopped parsley and a pinch of red pepper flakes.2 tbsp parsley, 1 pinch red pepper flakes
Notes
- Note 1: Replace the ham stock and water with low-sodium chicken stock or chicken broth.
- Ham bone: If you have one, simmer it in the soup with the stock and water. Lift it out before thickening, pick off any meat and stir it back in.
- Dried beans: Use 1 lb (450g) dried cannellini beans. Soak overnight, drain, boil hard in fresh water for 10 minutes, drain again, then simmer in the soup for 1–1½ hours until tender, adding 2–3 cups (500–750ml) extra water.
- Too salty? Do not add salt until the end. Dilute with water or unsalted stock, add an extra can of rinsed beans, or finish with sour cream or a squeeze of lemon juice.
- Make ahead: This soup tastes even better the next day. It thickens as it sits, so loosen it with a splash of water when you reheat it.
- Fridge: Cool completely and store in an airtight container for up to 4 days.
- Freezer: Freeze in portions for up to 3 months. Thaw overnight in the fridge. The potato softens a little after freezing, but in a soup like this you will not notice.
- Reheat: Warm gently on the stove until piping hot, stirring so the beans do not catch on the bottom of the pot.
- Smoky variation: Use smoked ham, or add ½ teaspoon of smoked paprika with the tomato paste.
- Greens: Swap the spinach for kale or shredded cabbage and give it 5 minutes in the pot to soften.
Nutrition
Nutritional information is always approximate, and will depend on quality of ingredients and serving sizes.
Using Dried Beans
Canned beans are faster, but dried beans are cheaper and give the soup a little more body. Here is how to swap them in.
- How much: Replace the canned beans with 1 lb (450g) dried beans or increase the quantity to make a heartier soup.
- Soak: Cover the beans with plenty of cold water and soak overnight. For a quick soak, cover with water, boil for 2 minutes, then take off the heat and leave for 1 hour. Drain and rinse.
- Boil first: Cannellini are white kidney beans, and like all kidney beans they need a proper boil. Cover the soaked beans with fresh water, boil hard for 10 minutes, then drain.
- Add to the soup: Add the beans to the pot with the stock and water and simmer for 1–1½ hours, until tender. You will need 2–3 cups (500–750ml) of extra water, as the beans absorb a lot.
Frequently Asked Questions
Yes – this recipe uses canned cannellini beans, so there is no soaking and the soup is ready in about an hour. Drain and rinse them before adding to the pot.
White beans. Cannellini are large and creamy, navy beans (haricot beans) are smaller and break down more for a thicker soup, and great northern beans sit in between. Use whichever you have.
Yes for this recipe. The liquid in the can is salty and starchy, and the ham stock already brings plenty of salt. Rinsing gives you control over the seasoning.
Any cooked ham works – leftover baked or glazed ham, gammon, or the meat pulled from a ham hock. Use about 1 lb (450g), diced or shredded. Smoked ham gives a deeper flavor but is saltier, so taste before you season.
Yes. Simmer the bone in the soup with the stock and water, then lift it out before you thicken the soup, pick off any meat and stir it back in.
Mash some of the beans and potato against the side of the pot, or blend two ladlefuls and stir them back in. You can also simmer the soup uncovered for 10 minutes, but remember this concentrates the salt.
Low-sodium chicken or vegetable stock. Use it in place of both the ham stock and the water, and taste before adding any salt.
Yes. Cool it completely and freeze in portions for up to 3 months. Thaw overnight in the fridge and reheat gently with a splash of water.
Up to 4 days in an airtight container. It thickens as it chills, so add a little water when reheating.
Old beans can take much longer to soften, and very hard water slows them down too. Keep simmering and add more water as needed.
The soup itself contains no gluten ingredients. Check the labels on your stock and canned beans to be sure.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Soup is too salty | Salty stock, unrinsed beans or salt added too early | Dilute with water or unsalted stock, add more beans or potato, finish with lemon juice |
| Soup is thin | Not enough starch released | Mash or blend some of the beans and potato, or simmer uncovered for 10 minutes |
| Soup is too thick | Beans and potato absorb liquid as it stands | Stir in hot water a little at a time |
| Soup tastes bland | Stock too diluted, or needs acid | Add more ham stock, black pepper and a squeeze of lemon juice |
| Soup is greasy | Fat not skimmed from the stock | Chill the stock first and lift off the fat, or skim the surface with a spoon |
| Beans are mushy | Soup boiled hard or simmered for too long | Keep it at a gentle simmer and check after 30 minutes |
| Dried beans will not soften | Old beans or hard water | Keep simmering and top up with water as needed |

















