This warming Italian-style soup brings together tender homemade meatballs, vegetables, and small pasta in a luscious creamy tomato broth. The meatballs, seasoned with Parmesan, garlic, and herbs, brown beautifully before simmering to perfection in the aromatic base.
The finished dish combines hearty elements with fresh baby spinach and a swirl of heavy cream for velvety richness. Each bowl delivers satisfying comfort with tender meatballs, al dente pasta, and perfectly balanced seasoning.
Ready in about an hour, this soup serves six generously and pairs wonderfully with crusty bread. The flavors deepen beautifully, making it even better the next day.
The first time I made this soup during a gray November weekend, my kitchen filled with such incredible aromas that my neighbor actually knocked on the door to ask what was cooking. That moment of sharing something warm and comforting turned into a regular dinner tradition.
Last winter, my sister came over feeling under the weather, and I whipped up a batch. She ate two bowls and swore it was the best thing shed had in weeks, asking for the recipe before she even left.
Ingredients
- 500 g ground beef or beef-pork mix: The pork adds fat and flavor that keeps meatballs tender
- 1/2 cup breadcrumbs: Essential for binding, use fresh breadcrumbs for better texture
- 1/4 cup grated Parmesan: Dont skip this, it adds umami depth to the meatballs
- 1 large egg: The binder that holds everything together
- 2 cloves garlic, minced: Fresh garlic always beats garlic powder here
- 2 tbsp fresh parsley: Adds brightness, chop it right before mixing
- 1 tsp dried oregano: Classic Italian flavor that pairs perfectly with tomato
- 1/2 tsp salt and 1/4 tsp pepper: Season generously but taste as you go
- 2 tbsp olive oil: Use this for both browning meatballs and sautéing vegetables
- 1 medium onion, 2 carrots, 2 celery stalks: The holy trinity that builds depth
- 3 cloves garlic, minced: More garlic for the soup base
- 1 tsp dried basil and 1/2 tsp thyme: Dried herbs work beautifully in long-simmered soups
- 1/2 tsp crushed red pepper flakes: Optional, but adds gentle warmth
- 800 g canned crushed tomatoes: Quality matters here, San Marzano tomatoes are ideal
- 1.2 L chicken or vegetable broth: Homemade broth is best, but a good quality store-bought works
- 1 bay leaf: Adds subtle herbal notes, remember to remove before serving
- 150 g small pasta: Ditalini or orzo hold up well in soup without getting mushy
- 200 ml heavy cream: Creates that luxurious silky finish
- 100 g baby spinach: Wilts beautifully and adds color and nutrition
Instructions
- Form the meatballs:
- Combine meat, breadcrumbs, Parmesan, egg, garlic, parsley, oregano, salt and pepper in a large bowl. Mix gently with your hands until just combined. Form into small meatballs about 2.5 cm in diameter. Overworking the meat makes them tough.
- Brown the meatballs:
- Heat 1 tbsp olive oil in a large soup pot over medium heat. Add meatballs in batches, turning to brown all sides. They do not need to cook through yet. Transfer to a plate lined with paper towels.
- Sauté the vegetables:
- Add remaining 1 tbsp olive oil to the same pot. Cook onion, carrots and celery for 5 minutes until softened and fragrant. Add garlic, basil, thyme and red pepper flakes. Cook 1 more minute until garlic is fragrant.
- Simmer the soup:
- Pour in crushed tomatoes and broth. Add bay leaf. Bring to a gentle simmer. Return meatballs to the pot. Cover and simmer for 15 minutes to develop flavors.
- Cook the pasta:
- Stir in pasta and simmer uncovered for 10 minutes. Cook until pasta is al dente and meatballs are completely cooked through. The pasta will absorb some liquid, which is normal.
- Finish with cream:
- Reduce heat to low. Remove bay leaf and discard. Stir in heavy cream and spinach. Cook 2 to 3 minutes until spinach wilts and soup becomes creamy. Season with salt and pepper to taste.
My father-in-law took one sip and declared it restaurant quality, then proceeded to ask when I would make it again. This soup has that effect on people.
Making It Lighter
After experimenting with substitutions, I found that half-and-half or evaporated milk creates a lovely velvety texture without the heaviness of cream. The soup remains satisfying but feels less indulgent.
Perfecting the Meatballs
I learned that keeping the meatballs small is crucial for soup enjoyment. Larger meatballs become unwieldy to eat and take too long to cook through. The 2.5 cm size is perfect for spooning up with every bite.
Serving Suggestions
A hunk of crusty bread for dipping is absolutely non-negotiable in my house. The bread soaks up that creamy tomato broth and becomes its own kind of magic. Keep extra Parmesan at the table because everyone always wants more.
- Grate extra Parmesan fresh at the table for the best flavor
- Stir a handful of fresh spinach into each individual bowl to keep it bright green
- Let guests add their own red pepper flakes for adjustable heat
This soup has become my go-to for bringing comfort to anyone who needs it. Simple, nourishing, and always exactly right.
Recipe FAQs
- → Can I make the meatballs ahead of time?
-
Yes, you can prepare and brown the meatballs up to a day in advance. Store them in the refrigerator and add them to the simmering broth when ready. This actually helps the flavors develop further.
- → What pasta works best in this soup?
-
Small pasta shapes like ditalini, orzo, small shells, or tubetti work beautifully. These shapes hold up well during simmering and are easy to scoop up with each spoonful. Avoid large shapes that may overpower the other ingredients.
- → Can I freeze this soup?
-
The soup freezes well for up to 3 months, but it's best to freeze it before adding the pasta and cream. When reheating, cook the pasta separately and stir in the cream at the end to maintain the best texture and prevent the dairy from separating.
- → How can I make this lighter?
-
Substitute half-and-half or evaporated milk for heavy cream, and use lean ground beef or turkey for the meatballs. You can also increase the vegetables and reduce the pasta slightly for a nutrient-dense version with fewer calories.
- → What can I serve alongside?
-
Crusty Italian bread or garlic bread is perfect for soaking up the creamy broth. A simple green salad with vinaigrette balances the richness. For a complete meal, consider roasted vegetables or a light antipasto platter beforehand.
- → Can I make this gluten-free?
-
Absolutely. Use gluten-free breadcrumbs in the meatballs and choose gluten-free pasta shapes like corn or rice-based varieties. Double-check that all canned ingredients, particularly the broth and tomatoes, are certified gluten-free.