This satisfying soup brings together homemade Italian-style meatballs, a luscious tomato-cream broth, and comforting pasta. The meatballs, seasoned with Parmesan, garlic, and herbs, brown beautifully before simmering to perfection in the vegetable-rich base.
The addition of heavy cream at the end creates a velvety texture, while fresh spinach adds color and nutrients. Perfect for cold weather or whenever you need a warming, filling meal that tastes like it simmered all day.
The first time I made this soup was during a particularly brutal February when my kitchen felt like the only warm place in the world. I had been craving something that felt like a hug in a bowl, and this combination of tender meatballs floating in a creamy tomato broth hit exactly the right note. My roommate kept wandering into the kitchen, asking if it was ready yet every five minutes until we both just stood there eating it straight from the pot with wooden spoons.
Last winter I made a triple batch for my sister when she was recovering from surgery, and she still talks about how comforting it was. Something about the combination of familiar flavors and that luxurious creamy texture makes people feel taken care of. My nephew who usually hates soup asked for seconds, which I count as a major victory in my culinary career.
Ingredients
- Ground beef or beef-pork mix: The pork adds fat and flavor that keeps meatballs tender and juicy
- Breadcrumbs: Essential for binding and preventing tough, dense meatballs
- Grated Parmesan: Adds umami depth that makes the meatballs taste professionally made
- Egg: The crucial binder that holds everything together
- Garlic: Fresh minced gives the best punch of flavor
- Fresh parsley: Brightens the meatballs and adds a fresh herbal note
- Dried oregano: Classic Italian flavor that pairs perfectly with the tomato base
- Olive oil: For browning meatballs and starting the soup base
- Onion, carrots, celery: The holy trinity that builds depth in the broth
- Crushed tomatoes: Creates that rich, velvety soup foundation
- Chicken or vegetable broth: The liquid backbone that carries all the flavors
- Small pasta: Ditalini or orzo are perfect because they fit on the spoon with meatballs
- Heavy cream: Transforms the tomato broth into something luxurious and silky
- Baby spinach: Wilts beautifully into the hot soup adding color and nutrition
Instructions
- Form the meatballs:
- Mix everything gently with your hands until just combined, then roll into small balls and set them on a plate while you heat your pot.
- Brown the meatballs:
- Heat olive oil in your soup pot and cook meatballs in batches until golden on all sides, then transfer to a plate.
- Build the soup base:
- Sauté onion, carrots, and celery until softened, then add garlic and herbs until fragrant.
- Create the broth:
- Pour in crushed tomatoes and broth, add the bay leaf, then return meatballs and let everything simmer together.
- Cook the pasta:
- Stir in the small pasta and cook until al dente, letting it absorb those developing flavors.
- Add the cream:
- Remove bay leaf, reduce heat, and stir in heavy cream and spinach until the greens wilt and everything becomes silky.
This recipe became my go-to for sick friends and new parents because it freezes beautifully and reheats perfectly. Something about the combination of protein, vegetables, and that creamy broth makes people feel genuinely nourished and cared for. I once delivered a batch to a neighbor who just had a baby, and she texted me three days later asking for the recipe.
Making It Lighter
Half-and-half works surprisingly well if you want to cut some calories without losing that creamy texture. The soup will still be rich and satisfying, just slightly less decadent than the full cream version.
Pasta Perfection
Small pasta shapes are essential here because they stay suspended in the broth instead of sinking to the bottom. I have learned the hard way that larger shapes make this soup difficult to eat elegantly.
Soup Thickening
The pasta naturally thickens the soup as it sits, which I actually prefer because it becomes more stew-like. If you love a thinner broth, cook pasta separately and add it to individual bowls.
- Cook pasta separately if meal prepping for the week
- Stop adding cream once you reach your desired consistency
- Reserve some pasta water if you need to thin leftovers
This soup has become my rainy day default because it transforms ordinary ingredients into something that feels special and comforting.
Recipe FAQs
- → Can I make the meatballs ahead of time?
-
Absolutely. You can prepare and freeze raw meatballs up to a month in advance, or cook them completely and store in the refrigerator for 3-4 days before adding to the soup.
- → What pasta works best in this soup?
-
Small shapes like ditalini, orzo, mini shells, or tubetti hold up well without becoming mushy. Avoid larger pasta shapes that may overpower the meatballs.
- → Can I freeze this soup?
-
The soup freezes well for up to 3 months, but it's best to freeze without the pasta. Add fresh pasta when reheating to prevent it from becoming overly soft.
- → How can I make this lighter?
-
Use half-and-half instead of heavy cream, or substitute evaporated milk. You can also lean ground turkey or chicken for the meatballs and increase the vegetables.
- → What can I serve with this soup?
-
Crusty bread, garlic knots, or a simple green salad complement this hearty soup perfectly. Grated extra Parmesan and fresh herbs make excellent toppings.