Italian Meatball Soup Recipe

If you love comfy, homey food that feels like a hug, this Italian Meatball Soup Recipe is exactly the kind of bowl you’ll want to make on repeat. It’s built around tender, flavourful meatballs simmered in a bright tomato-broth with vegetables, tiny pasta, and leafy greens — a cozy, balanced one-pot dinner that’s as kid-friendly as it is dinner-party-ready. Below I’ll walk you through everything: ingredients with metric & imperial measures, equipment, step-by-step technique, chef tips, swaps, make-ahead and freezing advice, serving ideas, and troubleshooting — everything someone would need to master this soup.
This post is written from the perspective of a professional chef who wants your kitchen to be efficient, your meatballs to be tender, and the final bowl to taste fresh and satisfying.
Why this Italian Meatball Soup Recipe works
This soup balances textures and flavours: meaty, herby meatballs; a light, aromatic tomato-and-broth base; al dente tiny pasta; and bright greens for freshness. The secret techniques — soaking breadcrumbs in milk, gentle mixing of the meat, briefly browning the meatballs, and layering ingredients by cook time — produce tender meatballs that keep their shape and a broth that’s flavourful but not overly heavy.
You’ll get:
- Comfort plus freshness in every spoonful.
- Flexible steps so you can adapt for family preferences or dietary needs.
- A recipe that’s easily doubled, halved, or prepped ahead.
Yield, time, and servings (what to expect)
- Yield: Serves about 6–8 (depending on portion size).
- Prep time: ~30–40 minutes (including shaping meatballs).
- Cook time: ~30–40 minutes.
- Total time: ~60–80 minutes.
(Exact times vary by stove and how fast you work; the important part is technique.)
Ingredients
Below are ingredients for a classic version. I include metric and imperial measurements to help you plan.
For the meatballs
- 900 g (2 lb) mixed ground meat (recommended: 50% beef, 50% pork). You may use all beef or a blend with veal for more luxury.
- 1 large egg (or 2 small) — room temperature.
- 90 ml (⅓ cup + 2 tsp) whole milk.
- 80 g (about 1 cup) fine breadcrumbs (or panko lightly pulsed). For gluten-free: gf breadcrumbs or almond flour (see variations).
- 60 g (½ cup) freshly grated Parmesan cheese.
- 2 tbsp chopped fresh parsley (flat-leaf), or 2 tsp dried parsley.
- 2 garlic cloves, minced (or 1 tsp garlic powder).
- 1½ tsp kosher salt (adjust to taste).
- ½ tsp freshly ground black pepper.
- 1 tsp dried oregano (or 1 tbsp finely chopped fresh oregano).
- 1 tsp fennel seeds, crushed (optional — gives an Italian sausage note).
- 2 tbsp olive oil (for browning; optional if you bake meatballs).
For the soup base
- 2 tbsp olive oil.
- 1 medium onion, finely diced.
- 2 medium carrots, diced (about 1½ cups).
- 2 celery stalks, diced (about 1 cup).
- 3 garlic cloves, thinly sliced or minced.
- 800 g (28 oz) canned crushed tomatoes (or 2 cups fresh tomatoes, chopped).
- 1.5–2 liters (6–8 cups) low-sodium chicken or beef stock/broth (use more or less depending on how brothy you like it).
- 2 bay leaves.
- 1 tsp dried basil or 1 tbsp fresh chopped basil.
- ½ tsp dried oregano.
- 150 g (¾ cup) small pasta (ditalini, small shells, or acini di pepe) — measure dry.
- 150–200 g (5–7 oz) baby spinach or escarole, roughly chopped.
- Salt and pepper to taste.
- A squeeze of lemon juice (optional, for brightness).
- Extra grated Parmesan and chopped parsley for serving.
Equipment (helpful, not mandatory)
- Large heavy-bottomed Dutch oven or soup pot (5–7 qt / 5–7 L).
- Mixing bowl for meatball mix.
- Small bowl for soaking breadcrumbs.
- Skillet (if browning meatballs separately).
- Slotted spoon or spider.
- Wooden spoon, chef’s knife, cutting board.
- Measuring cups & spoons, kitchen scale (recommended for precision).
Step-by-step: building the perfect Italian Meatball Soup
I’ll break this into stages: mixing the meatballs, shaping and optional browning, building the soup base, finishing the soup, and serving.
1) Prep and breadcrumbs
- Place the breadcrumbs in a small bowl and pour the milk over them. Let sit 5–10 minutes until soft. This is called a panade and keeps meatballs tender and moist.
- Grate cheese, chop parsley, and mince garlic. Dice onion, carrots, and celery.
2) Mix the meatball mixture (gentle is key)
- In a large bowl, combine the ground meat, softened breadcrumbs, egg, grated Parmesan, parsley, garlic, salt, pepper, oregano, and fennel seeds (if using).
- Using your hands, fold gently just until combined. Don’t overwork — over-mixing compresses the proteins and leads to dense meatballs. Aim for a uniform mixture but stop when it’s just mixed.
- For consistent cooking, weigh or portion meatballs. Aim for about 25–30 g (¾–1 oz) each for “soup-sized” bite meatballs — roughly 1–1½ tablespoons. Form gently into rounds; don’t compact them.
3) Brown or bake meatballs (optional but recommended)
You have two options — quick sear or bake. Browning adds flavour but isn’t required.
Pan-browning (recommended for flavor)
- Heat 2 tbsp olive oil in a skillet over medium-high.
- Brown meatballs in batches, turning to get an even golden crust (about 2–3 minutes per side). They don’t need to be fully cooked — just develop color. Transfer to paper towels.
Baking (less active, lighter oil)
- Preheat oven to 200°C (400°F).
- Place meatballs on a parchment-lined sheet and bake 12–15 minutes until lightly browned. They will finish cooking in the soup.
4) Build the soup base
- In your large soup pot, heat 2 tbsp olive oil over medium heat. Add diced onion, carrots, and celery (mirepoix). Saute until softened and slightly translucent (6–8 minutes).
- Add garlic and sauté 30 seconds until fragrant.
- Pour in crushed tomatoes and stir, scraping any fond (browned bits) from the pan.
- Add the stock, bay leaves, and dried herbs. Bring to a gentle simmer. Taste the broth and add a little salt and pepper — remember the meatballs and Parmesan will add salt later.
- Let the broth simmer for 10 minutes so flavors marry.
5) Finish: add meatballs and pasta
- Add the browned or baked meatballs to the simmering broth. If you didn’t brown them, gently drop raw shaped meatballs into the simmering broth — still works, but browning adds flavor.
- Simmer gently for 10–12 minutes (for pre-browned meatballs) or 15–18 minutes (if raw), until meatballs are cooked through (internal temp ~72°C / 160°F for pork/beef blends). Keep the simmer gentle to avoid breaking them apart.
- Add the small pasta and cook until al dente (follow the package time; usually 7–9 minutes for ditalini). If you expect leftovers, undercook the pasta by 1 minute to avoid it absorbing too much broth later.
- Stir in the spinach or escarole at the end and cook until just wilted (2 minutes). Finish with a squeeze of lemon if desired and adjust salt/pepper.
6) Serve
Ladle into bowls, grate plenty of Parmesan over the top, and scatter fresh parsley. Serve with crusty bread or garlic pull-apart for dunking.
Chef tips & technique notes (what makes this exceptional)
- Panade for tenderness: Soaking breadcrumbs in milk creates a panade, which keeps meatballs moist and prevents a tough texture.
- Don’t overwork meat: Mix until uniform. Overworking squeezes out fat and makes them dense.
- Portion uniformly: Use a teaspoon or small scoop to make consistent meatballs so they cook evenly.
- Browning vs. no browning: Browning adds caramelized flavor (maillard reaction). If you’re short on time, add raw meatballs directly to the simmering broth — they’ll be tasty but milder.
- Salt sparingly early: Because of Parmesan and broth, add salt gradually and taste as you go.
- Pasta timing: If you plan to store leftovers, keep the pasta separate or undercook it slightly; pasta swells and absorbs broth during refrigeration.
- Acidity balance: A squeeze of lemon, splash of red wine, or a pinch of sugar can balance the tomatoes if they taste too acidic.
- Use fresh herbs when possible: Fresh basil and parsley at the end brighten the soup.
Variations & dietary swaps
This recipe is a great base to adapt.
Gluten-free
- Use gluten-free breadcrumbs or finely ground oats (certified gf).
- Replace pasta with gluten-free small pasta or omit and use extra vegetables/quinoa.
Lower-carb / Keto
- Replace breadcrumbs with almond flour or crushed pork rinds.
- Skip pasta; serve with sautéed zucchini ribbons or cauliflower rice.
Vegetarian / Vegan
- Use store-bought plant-based meatball mix or make lentil-walnut “meatballs” (blend cooked lentils, walnuts, breadcrumbs, flax egg).
- Use vegetable stock and skip Parmesan (or use vegan parm).
- Add more beans (cannellini) for protein.
Chicken or Turkey meatballs
- Replace beef/pork with ground turkey or chicken. Add extra fat (a tablespoon of olive oil or extra egg) to keep them moist.
Spicy version
- Add ½ tsp red pepper flakes to the meatball mix and another pinch to the broth. Top with Calabrian chili oil for more heat.
Rustic Italian (with potatoes)
- Add small diced potatoes to the broth early; omit pasta for a heartier stew-like finish.
Make-ahead, storage, and freezing
Make-ahead
- Meatballs can be mixed and shaped up to 24 hours ahead; keep covered and refrigerated.
- Broth can be made 2–3 days ahead and refrigerated.
Storing leftovers
- Refrigerate leftover soup in airtight containers for up to 3–4 days. Note pasta will absorb broth; if you intend to keep leftovers, remove pasta before storing or under cook pasta initially.
Freezing
- Freeze meatballs (cooked or raw) in a single layer on a tray, then transfer to freezer bags — they’ll keep 2–3 months.
- Freeze the soup without pasta for best results; freeze in portions for quick meals.
- To reheat from frozen: thaw in refrigerator overnight, gently rewarm on stovetop, add fresh pasta and greens at the end.
Troubleshooting & FAQs
Q: My meatballs fell apart in the soup.
A: Likely causes: they were over-handled and too loose, or the simmer was too vigorous. Make sure to use a panade (breadcrumbs + milk), don’t over-mix, and simmer gently (not a rolling boil). Browning gives a firmer crust that helps them hold.
Q: Meatballs are dense and dry.
A: Over-mixing compacts proteins; use gentle folding. Also check panade ratio — too little milk/breadcrumbs and insufficient fat in lean meats can cause dryness. For lean meat, add extra egg or a tablespoon olive oil.
Q: Soup is bland.
A: Taste at several points. Adjust salt slowly; finish with acid (lemon) and fresh herbs to brighten. Parmesan adds umami — add at serving.
Q: Pasta got mushy in leftovers.
A: Either remove pasta before storing, under cook it, or add fresh pasta when reheating. Alternatively use tiny pasta or leave it out and serve with bread.
Serving suggestions & pairings
This soup is versatile. Here are finishing touches and pairings.
- Garnish ideas: Fresh basil, chopped parsley, extra grated Parmesan, cracked black pepper, drizzle of extra virgin olive oil, or a few red pepper flakes.
- Bread: Serve with crusty ciabatta, garlic bread, or focaccia for dipping.
- Salad: A crisp arugula salad with lemon vinaigrette balances the warm soup.
- Wine: For adults, a light red (Chianti, Sangiovese) or a crisp white (Pinot Grigio) pairs nicely.
- Sides: Roasted vegetables, buttery polenta, or a simple bruschetta.
Nutritional notes (approximate)
This will vary based on exact ingredients and portion sizes. A rough estimate per serving (1 of 8 servings) for the recipe using mixed pork/beef, small pasta, and olive oil:
- Calories: ~350–450 kcal
- Protein: 20–30 g
- Fat: 18–25 g (depending on meat blend)
- Carbohydrates: 25–35 g (pasta & veggies)
- Fiber: 2–4 g
If you want exact macros, weigh your ingredients and use a nutrition calculator for precision.
Scaling the recipe and party tips
- Double or halve easily — meatballs scale linearly. Use a larger pot for doubling.
- For a buffet, keep broth warm in a slow cooker and add freshly browned meatballs and pre-cooked pasta to a separate steam tray so guests can assemble bowls to avoid soggy pasta.
- For meal prep, portion soup without pasta, freeze, and add fresh pasta or grains when reheating.
A few finishing chef secrets
- A small pinch of crushed fennel seeds in the meatball mix gives a subtle Italian sausage flavor without overpowering.
- Toasting the tiny pasta in the pot for a minute before adding liquid adds a nutty background note.
- If using store-bought stock, choose low-sodium and concentrate flavor with roasted vegetable scraps (onion peels, carrot tops) simmered briefly and strained.
- If you want a silkier broth, blend a small portion of the cooked carrots and return the purée to the pot — smooth and velvety without cream.
Final thoughts
This Italian Meatball Soup Recipe is more than just a list of ingredients — it’s a method for consistent, delicious results. The core principles are simple: tender meatballs (panade + gentle mixing), a flavourful but balanced broth, the right timing for pasta and greens, and a few finishing touches for brightness. Whether you’re cooking for a tired weeknight or a cozy family dinner, this soup is forgiving, flexible, and deeply satisfying.

Italian Meatball Soup Recipe
Ingredients
For the Meatballs:
- 2 lb 900 g ground beef and pork blend (or all beef)
- 1 large egg
- ⅓ cup whole milk
- 1 cup fine breadcrumbs
- ½ cup freshly grated Parmesan cheese
- 2 tbsp fresh parsley chopped
- 2 garlic cloves minced
- 1½ tsp salt
- ½ tsp black pepper
- 1 tsp dried oregano
- 1 tsp crushed fennel seeds optional
- 2 tbsp olive oil for browning
For the Soup:
- 2 tbsp olive oil
- 1 medium onion diced
- 2 carrots diced
- 2 celery stalks diced
- 3 garlic cloves minced
- 28 oz 800 g crushed tomatoes
- 6 –8 cups low-sodium chicken or beef broth
- 2 bay leaves
- 1 tsp dried basil
- ½ tsp dried oregano
- ¾ cup small pasta ditalini or small shells
- 5 –7 oz fresh spinach or escarole chopped
- Salt and pepper to taste
- Fresh parsley & grated Parmesan for garnish
Instructions
Step 1: Prepare the Meatballs
- In a small bowl, soak breadcrumbs in milk for 5–10 minutes.
- In a large bowl, combine ground meat, soaked breadcrumbs, egg, Parmesan, parsley, garlic, salt, pepper, oregano, and fennel seeds.
- Mix gently until just combined.
- Shape into small 1-inch meatballs (about 1 tablespoon each).
Step 2: Brown the Meatballs
- Heat 2 tbsp olive oil in a skillet over medium heat.
- Brown meatballs on all sides for 5–7 minutes (they don’t need to cook fully). Set aside.
Step 3: Prepare the Soup Base
- In a large pot or Dutch oven, heat 2 tbsp olive oil over medium heat.
- Saute onion, carrots, and celery for 6–8 minutes until softened.
- Add garlic and cook for 30 seconds until fragrant.
- Stir in crushed tomatoes, broth, bay leaves, basil, and oregano. Bring to a gentle simmer.
Step 4: Combine & Finish
- Add browned meatballs to the simmering soup. Cook for 10–15 minutes until fully cooked through.
- Add pasta and cook until al dente according to package instructions.
- Stir in spinach and cook until wilted (about 2 minutes).
- Adjust seasoning with salt and pepper. Remove bay leaves.
Step 5: Serve
- Ladle into bowls and garnish with fresh parsley and grated Parmesan. Serve hot with crusty bread.
Notes
- Make Ahead: Meatballs can be shaped 24 hours in advance and refrigerated.
- Storage: Store in an airtight container in the refrigerator for up to 4 days.
- Freezing: Freeze without pasta for best results. Add fresh pasta when reheating.
- Variation: Substitute ground turkey for a lighter version.
- Low-Carb Option: Skip pasta and add zucchini noodles or cauliflower rice.
- Tip: For extra flavour, add a squeeze of lemon juice before serving.
