This soul-warming bowl combines handmade Italian meatballs with a velvety tomato base enriched with heavy cream and fresh spinach. The aromatic foundation of onions, carrots, and celery creates depth, while dried herbs like basil, thyme, and oregano infuse authentic Mediterranean flavors throughout the simmering process.
Small pasta such as ditalini or orzo adds satisfying substance, making each spoonful more filling. The finished dish emerges with perfectly cooked meatballs, al dente pasta, and wilted greens floating in a luxurious, ruby-hued broth that delivers restaurant-quality results with simple techniques.
Garnished with grated Parmesan and fresh herbs, this versatile one-pot meal adapts beautifully to dietary needs while maintaining its rich character and comforting appeal.
The first snowfall had just started dusting the windowsills when my neighbor Anna knocked on my door with a container of this soup. She had just returned from visiting her grandmother in Bologna and insisted that this was the soup that cured homesickness. One spoonful of that velvety tomato broth and those tender little meatballs, and I understood exactly what she meant.
Last winter my sister came over after a particularly rough week at work. I set a pot of this soup simmering on the back burner, and by the time she walked through the door, the aroma of garlic and tomatoes had already started working its magic. We ate standing at the kitchen counter, talking about nothing and everything, until every drop was gone.
Ingredients
- Ground beef: A mix of beef and pork gives the meatballs extra richness and keeps them tender
- Breadcrumbs: These are essential for binding the meatballs and preventing them from becoming tough
- Grated Parmesan: Adds umami depth to the meatballs that you cannot get from salt alone
- Crushed tomatoes: Create the perfect base for a soup thats hearty but not chunky
- Heavy cream: The secret ingredient that makes this soup truly luxurious and comforting
- Small pasta: Ditalini or orzo are ideal because they cook evenly and fit on a spoon
- Baby spinach: Wilts beautifully into the hot soup and adds fresh color and nutrients
Instructions
- Mix the meatball mixture:
- Combine the ground meat, breadcrumbs, Parmesan, egg, garlic, parsley, oregano, salt, and pepper in a large bowl. Mix with your hands until just combined and form into small meatballs.
- Brown the meatballs:
- Heat olive oil in a large soup pot over medium heat and add meatballs in batches. Turn to brown on all sides then transfer to a plate.
- Cook the vegetables:
- Sauté onion, carrots, and celery for 5 minutes until softened. Add garlic, basil, thyme, and red pepper flakes and cook 1 minute more.
- Simmer the base:
- Add crushed tomatoes, broth, and bay leaf. Bring to a simmer then return meatballs to the pot. Cover and simmer gently for 15 minutes.
- Add the pasta:
- Stir in the pasta and continue simmering uncovered for 10 minutes or until pasta is al dente and meatballs are cooked through.
- Finish and serve:
- Remove the bay leaf then stir in heavy cream and spinach. Cook for 2 to 3 minutes until spinach is wilted and season with salt and pepper.
This recipe has become my go to for new parents and friends recovering from surgery. It freezes beautifully, so I often double the batch and keep portions in the freezer for emergencies. There is something about tiny meatballs floating in a creamy broth that feels like a hug in a bowl.
Making Ahead
The soup base can be made a day in advance, but hold off on adding the pasta and cream until you reheat it. Pasta absorbs liquid as it sits, so adding it fresh keeps the texture perfect every time.
Customizing Your Soup
Sometimes I add diced zucchini or bell pepper along with the other vegetables for extra nutrition. You can also use half and half instead of heavy cream for a lighter version that still feels indulgent.
Serving Suggestions
A hunk of crusty bread is non negotiable for soaking up every last drop of that creamy tomato broth. I also like to set out extra Parmesan and red pepper flakes so everyone can season their bowl exactly how they like it.
- Grate extra Parmesan over each bowl for a salty finish
- Crush more red pepper flakes if you love heat
- Stir in a handful of fresh basil just before serving
There is nothing quite like gathering around a steaming pot of soup while snow falls outside. This is the kind of recipe that turns a regular Tuesday into something special.
Recipe FAQs
- → Can I make the meatballs ahead of time?
-
Absolutely. Prepare and shape the meatballs up to 24 hours in advance, storing them covered in the refrigerator. You can also brown them ahead and finish cooking in the broth when ready to serve.
- → What pasta works best in this soup?
-
Small shapes like ditalini, orzo, mini shells, or tubetti capture the broth beautifully. Avoid larger pasta as they overpower the spoonful-to-spoonful experience.
- → Can I freeze this soup?
-
The broth and meatballs freeze well for up to 3 months. For best results, freeze before adding pasta and cream. Reheat on the stovetop, then add freshly cooked pasta and finish with cream.
- → How can I make this lighter?
-
Replace heavy cream with half-and-half or evaporated milk. Use lean ground turkey or chicken for meatballs, and increase vegetables like zucchini or spinach while reducing pasta quantity.
- → What's the secret to tender meatballs?
-
Avoid overmixing the meat mixture—combine until just incorporated. The breadcrumbs and egg bind gently, and simmering directly in the broth keeps them moist while infusing flavor throughout.
- → Can I make this dairy-free?
-
Substitute coconut cream or full-fat canned coconut milk for heavy cream. Use nutritional yeast or vegan Parmesan alternative, and replace meatball cheese with additional breadcrumbs.