Meatball Soup

There’s something incredibly comforting about a big pot of meatball soup simmering away on the stove. It’s simple, unfussy, and somehow tastes like you put in far more effort than you actually did. The tender meatballs bob around with soft vegetables in a golden broth that warms you from the inside out.

It’s the kind of recipe I reach for when I want proper comfort food without getting fussy about it. No complicated steps, no hard-to-find ingredients — just honest flavor and a kitchen that smells amazing while it cooks. Whether you’re feeding the family or just need something soothing after a long day, this soup never disappoints.

Ingredients You’ll Need For For the meatballs
  • 250g beef mince
  • 250g pork mince
  • 1 large egg
  • 2 cloves garlic, minced
  • ½ teaspoon salt
  • ¼ teaspoon black pepper
Ingredients You’ll Need For For the soup
  • 2 medium potatoes (about 400g), diced into 2cm cubes
  • 2 onions (1 chopped, 1 whole with skin on)
  • 2 medium carrots (about 200g), sliced into rounds
  • 3 celery sticks, chopped
  • 1 tin (300g) cannellini beans, drained and rinsed
  • 2 large handfuls fresh spinach (about 100g)
  • 2 litres water
  • 2 tablespoons olive oil
  • 1–2 teaspoons dried dill (or 1 small bunch fresh dill)
  • 1 teaspoon double cream per serving (optional)
  • 1 teaspoon salt
  • ½ teaspoon black pepper
  • Fresh parsley, roughly chopped, for serving

The Meatball Foundation: Why Two Meats Matter

Combine 250g beef mince, 250g pork mince, 1 large egg, 2 minced garlic cloves, ½ teaspoon salt, and ¼ teaspoon black pepper in a large bowl. Mix gently with your hands until just combined, then roll into walnut-sized balls (about 3cm in diameter).

Using both beef and pork isn’t just for fun — it makes a difference. Beef alone gives flavor, but the meatballs turn firmer. Pork adds fat and tenderness, keeping them soft even after simmering for 30 minutes. The egg holds everything together without making the mixture dense. The key is to mix gently. Overworking the meat will give you tough meatballs, and nobody wants that.

Browning Creates Depth You Can’t Skip

Heat 2 tablespoons olive oil in a large frying pan over medium-high heat. Add meatballs in batches and brown on all sides for 5–6 minutes total. Transfer to a large soup pot.

Browning is where the flavor starts. You’re not trying to cook the meatballs through — that happens in the soup — but that golden crust adds richness to the broth. I’ve tried skipping this step when I was in a rush, and every time I regretted it. The soup tastes flatter without it.

The Golden Broth Trick

Pour 2 litres of water into the pot with the browned meatballs. Add 1 whole onion with skin on. Bring to a boil, then reduce to a medium simmer.

That whole onion with its skin still on may seem odd, but it’s a classic trick. The papery skin releases natural color into the water, turning your broth beautifully golden without stock cubes or additives. It also adds a slight sweetness that rounds out the flavor. Brown or red onions work best. You’ll remove it later — it’s there purely for color and aroma.

Building the Vegetable Base

While the broth heats, dice 2 medium potatoes into 2cm cubes, slice 2 medium carrots into rounds, chop 3 celery sticks into 1cm pieces, and dice the remaining peeled onion.

Each vegetable plays its part. Potatoes release starch that thickens the broth slightly and makes it more filling. Carrots add sweetness, balancing out the savory meat. Celery brings that classic soup aroma. I’ve tested other vegetables in this mix, but this trio gives the best flavor without overwhelming the broth.

Layering the Flavour

Season the simmering broth with 1 teaspoon salt, ½ teaspoon black pepper, and 1–2 teaspoons dried dill. Add the diced potatoes, chopped onion, sliced carrots, and chopped celery. Simmer over medium heat for 25–30 minutes, stirring occasionally.

Dill is what gives this soup its character. It brightens the broth and makes everything taste more rounded. I usually use dried dill because it spreads well in the simmer. Fresh dill works too, but add it during the last five minutes so it keeps its flavor. The vegetables need the full simmer to turn tender without falling apart.

Beans for Body and Protein

When vegetables are nearly tender, stir in 1 tin (300g) drained and rinsed cannellini beans. Let them warm through for 5 minutes.

Cannellini beans make this soup more substantial without making it heavy. They add creaminess and extra protein, turning this into a complete meal. Canned beans work perfectly here — just rinse them well to remove excess salt.

Fresh Greens at the Finish

Fish out the whole onion and discard it. Add 2 large handfuls of fresh spinach and stir until wilted, about 1–2 minutes. Taste and adjust seasoning.

Spinach goes in right at the end so it stays bright and fresh. It wilts quickly, so don’t walk away from the pot. Fresh works better than frozen here — frozen spinach tends to water down the broth. Kale or chard can be used instead, but they need a few extra minutes to soften.

The Optional Richness

If using double cream, swirl 1 teaspoon into each individual bowl rather than the whole pot.

Just a touch of cream rounds out the broth and adds subtle richness without turning the soup heavy. Adding it to individual bowls is smarter — that way, people who prefer a lighter broth can skip it.

Serving Fresh and Hot

Ladle the hot soup into deep bowls, making sure each serving gets 3–4 meatballs and a good mix of vegetables. Scatter generous amounts of fresh parsley over the top.

Fresh parsley might seem like a garnish, but it genuinely lifts the whole dish. The color, the freshness — it finishes the soup perfectly. Dried parsley won’t do the same job.

🔍 Recipe Notes & Tips

  • The meatball mixture should be slightly sticky but still hold its shape. Lightly wet hands if it sticks too much.
  • Keep meatballs the same size so they cook evenly.
  • Choose an onion with darker outer layers for deeper broth color.
  • If your broth still looks pale halfway through simmering, let the onion sit longer.
  • Cannellini beans can be swapped with butter beans or navy beans.
  • Replace half the water with stock for a richer base.
  • Frozen spinach can work — just thaw and squeeze dry before adding.
  • Double cream can be replaced with crème fraîche or left out entirely.

🍽️ Serving Suggestions

  • Serve with crusty sourdough, rye, or baguette for dipping.
  • Add a spoonful of sour cream for tang.
  • Grate Parmesan or Pecorino over the top for a salty finish.
  • Pair with a simple rocket salad dressed with lemon vinaigrette.
  • Offer lemon wedges or pickled vegetables on the side.

🎯 Make it Work for

  • Sunday family dinners.
  • Meal prep — it reheats beautifully.
  • Feeding a crowd on a budget.
  • Comfort when someone’s feeling unwell.
  • Autumn and winter evenings.
  • Casual dinner parties or potlucks.

📦 Storage & Leftovers

  • Store in an airtight container in the fridge for up to 4 days.
  • It tastes even better the next day.
  • Reheat gently on the stove; add a splash of water if it thickens.
  • Freeze in portions for up to 3 months, leaving space for expansion.
  • If freezing, add spinach fresh after reheating.
  • Pack leftovers into a thermos for an easy hot lunch.

Meatball Soup

A hearty and comforting meatball soup filled with tender meatballs, veggies, and a flavorful broth. It’s a cozy, family-friendly meal perfect for chilly days.
Prep Time 15 minutes
Cook Time 35 minutes
Total Time 50 minutes
Servings: 6

Ingredients
  

For the meatballs:
  • 250 g beef mince
  • 250 g pork mince
  • 1 large egg
  • 2 cloves garlic minced
  • ½ teaspoon salt
  • ¼ teaspoon black pepper
For the soup:
  • 2 medium potatoes about 400g, diced into 2cm cubes
  • 2 onions 1 chopped, 1 whole with skin on
  • 2 medium carrots about 200g, sliced into rounds
  • 3 celery sticks chopped
  • 1 tin 300g cannellini beans, drained and rinsed
  • 2 large handfuls fresh spinach about 100g
  • 2 litres water
  • 2 tablespoons olive oil
  • 1 –2 teaspoons dried dill or 1 small bunch fresh dill
  • 1 teaspoon double cream per serving optional
  • 1 teaspoon salt
  • ½ teaspoon black pepper
  • Fresh parsley roughly chopped, for serving

Method
 

  1. In a large bowl, combine beef mince, pork mince, egg, garlic, ½ teaspoon salt, and ¼ teaspoon black pepper. Mix gently until just combined. Roll into walnut-sized balls (3cm diameter). Set aside.
  2. Heat 2 tablespoons olive oil in a large frying pan over medium-high heat. Brown meatballs in batches for 5–6 minutes, turning to get all sides golden. Transfer browned meatballs to a large soup pot.
  3. Pour 2 litres water into the pot with meatballs. Add whole onion with skin. Bring to a boil, then reduce to medium simmer.
  4. Dice potatoes, slice carrots, chop celery, and dice peeled onion while broth heats.
  5. Season broth with 1 teaspoon salt, ½ teaspoon black pepper, and 1–2 teaspoons dill. Add all diced vegetables. Simmer 25–30 minutes, stirring occasionally, until vegetables are tender.
  6. Stir in drained cannellini beans and let warm for 5 minutes.
  7. Remove whole onion. Add fresh spinach and stir until wilted (1–2 minutes). Taste and adjust seasoning.
  8. Serve hot in deep bowls with 3–4 meatballs per portion. Swirl in double cream if using. Garnish generously with parsley.

This soup is everything good comfort food should be — warm, filling, and dependable. Once you’ve made it once, it’ll become one of those recipes you don’t even need to look up anymore. If you try it, I’d love to hear how it went — especially if you tweak it for your own kitchen. There’s always room for your version at the table.

Similar Posts