When it comes to comfort food that warms the soul, few dishes can rival a hearty meatball soup. Imagine juicy Italian meatballs nestled in tender pasta, surrounded by a creamy tomato broth infused with garlic, herbs, and spinach—this soup tastes like a Sunday night spaghetti dinner, but in a cozy, easy-to-serve bowl.
This Meatball Soup recipe is perfect for weeknight dinners, meal prep, or even a crowd-pleasing starter. It’s rich, satisfying, and requires just one pot, making cleanup a breeze.
Whether you make your own homemade meatballs or use frozen, this soup combines bold Italian flavors with the comfort of creamy, hearty broth.
Why You’ll Love This Recipe
- One-pot convenience: Minimal cleanup, maximum flavor.
- Versatile protein options: Use homemade, air fryer, or store-bought meatballs.
- Comforting and creamy: The combination of cream, pasta, and tomato broth hits all the right notes.
- Packed with veggies: Baby spinach adds freshness and nutrients.
- Quick weeknight meal: Ready in just 35 minutes.
- Kid-friendly and family-approved: Flavors are bold but approachable.
With this recipe, you get the satisfaction of Italian comfort food without spending hours in the kitchen.
Ingredients Breakdown
This recipe yields 8 servings. Ingredients are listed exactly as provided and grouped for clarity.
Protein
- 1 recipe of homemade meatballs (or 18–20 oz. bag of frozen meatballs, thawed)
Aromatics & Flavor Base
- 1 tablespoon olive oil
- 1 yellow onion, diced
- 6 cloves garlic, minced
- 1 tablespoon Italian seasoning
- 2 tablespoons tomato paste
Liquids & Broth
- 32 oz. chicken broth
- 28 oz. can crushed tomatoes
Pasta & Vegetables
- 8 oz. uncooked rotini pasta (about 2 ½ cups)
- 2 cups baby spinach
Creaminess & Garnish
- ½ cup heavy cream
- Kosher salt and fresh cracked pepper, to taste
- Shaved Parmesan and freshly chopped parsley for garnish
Tools & Equipment Needed
- Large pot or Dutch oven
- Wooden spoon or silicone spatula
- Cutting board and sharp knife
- Measuring cups and spoons
- Ladle for serving
One pot is enough for this recipe, which makes it convenient for busy weeknights or large family dinners.
Step-by-Step Instructions
1. Prepare Meatballs
- Make homemade Italian meatballs, or use air fryer meatballs, or thaw an 18–20 oz. bag of frozen meatballs.
- If using frozen meatballs, cook according to package instructions or thaw overnight in the refrigerator.
Pro Tip: Homemade meatballs add depth of flavor, but frozen meatballs are a convenient shortcut that still taste great.
2. Sauté Aromatics
- Heat 1 tablespoon olive oil in a large pot over medium heat.
- Add diced yellow onion with a couple large pinches of salt and pepper. Sauté for 6–8 minutes, stirring occasionally, until slightly caramelized.
- Add 6 cloves minced garlic, 1 tablespoon Italian seasoning, 2 tablespoons tomato paste, and a couple more pinches of salt and pepper. Cook 1 minute, stirring frequently.
This step builds the base of flavor, infusing the soup with aromatic sweetness and herbs.
3. Deglaze the Pot
- Add a few splashes of chicken broth to the pot to loosen any browned bits from the bottom.
- Stir thoroughly to incorporate these flavorful bits into the soup base.
4. Build the Soup
- Add the remaining chicken broth, crushed tomatoes, uncooked rotini pasta, and cooked meatballs.
- Season with a couple large pinches of salt and pepper.
- Bring to a simmer over medium-high heat.
5. Simmer
- Reduce heat to low and cover the pot.
- Simmer for 12–15 minutes, or until the pasta is cooked al dente and meatballs are heated through.
Note: The soup will thicken slightly as it cooks. If it seems too thick, add an extra splash of broth or cream.
6. Add Spinach and Cream
- Stir in 2 cups baby spinach and ½ cup heavy cream.
- Cook until the spinach wilts and the soup is warmed through.
- Taste and adjust salt and pepper as needed.
7. Serve
- Ladle soup into bowls.
- Garnish with shaved Parmesan and freshly chopped parsley.
- Serve hot with crusty bread or garlic toast for a full meal.

Tips & Variations
Flavor and Seasoning
- Season moderately at each stage to layer flavors.
- A leftover Parmesan rind can be added to the pot while simmering for added depth.
Pasta Options
- Swap rotini with small shells, ditalini, or orzo for variation.
- Cook slightly less than package directions for al dente pasta that won’t overcook in the soup.
Meatball Variations
- Use beef, pork, turkey, or chicken meatballs depending on preference.
- For a spicier soup, add red pepper flakes when sautéing garlic.
Cream Alternatives
- Use half-and-half instead of heavy cream for a lighter version.
- For a dairy-free option, use coconut cream or cashew cream.
Flavor Profile & Texture
- Broth: Creamy, tomato-rich, and herb-forward.
- Meatballs: Juicy, savory, with a tender bite.
- Pasta: Al dente, providing a chewy contrast.
- Spinach: Bright, fresh, and slightly earthy.
- Overall: Balanced richness and comfort with Italian flavors.
Nutritional Overview (Per Serving)
- Calories: 383 kcal
- Protein: 16.2 g
- Fat: 19.7 g
- Saturated Fat: 7 g
- Carbohydrates: 37.9 g
- Fiber: 5.1 g
- Sugar: 9.2 g
- Sodium: 1033.3 mg
- Cholesterol: 52.8 mg
This soup provides a satisfying balance of protein, fiber, and complex carbs, making it ideal for a hearty lunch or dinner.
Make-Ahead & Storage Tips
- Refrigeration: Store cooled soup in an airtight container for up to 4 days.
- Freezing: Freeze in portions without cream; add cream after thawing.
- Reheating: Warm gently over low heat on the stovetop, stirring occasionally. Add extra broth if needed.
Frequently Asked Questions
Can I use frozen meatballs?
Yes! Thaw overnight or cook according to package instructions before adding to the soup.
Can I make this soup vegetarian?
Yes, substitute vegetable broth and use plant-based meatballs or tofu balls.
Will the pasta get mushy if I reheat leftovers?
Yes, pasta continues to absorb liquid. Store pasta separately or add fresh pasta when reheating.
Can I make this soup spicier?
Add red pepper flakes during the sauté step for heat.
How do I prevent the soup from being too thick?
Add extra broth or cream as needed while simmering or when reheating.
Cooking Timeline (At a Glance)
| Stage | Time |
|---|---|
| Prep Time | 10 minutes |
| Cook Time | 25 minutes |
| Total Time | 35 minutes |
Serving Suggestions
- Serve with freshly grated Parmesan and parsley.
- Pair with garlic bread or focaccia for dipping.
- Great for meal prep, family dinners, or cozy nights at home.
Ingredient Spotlight
Meatballs
The star of the soup, meatballs can be homemade or store-bought. Juicy and flavorful, they absorb the broth while retaining their structure.
Crushed Tomatoes
The foundation of the broth, crushed tomatoes provide natural sweetness, acidity, and body for the creamy soup.
Pro Cooking Tips
- Sauté onions and garlic for a richer base.
- Deglaze the pot to lift browned bits into the broth.
- Add cream last to prevent curdling and maintain a silky texture.
Storage & Freezing Guide
- Refrigeration: 4 days in an airtight container.
- Freezing: Freeze without cream for up to 3 months. Add cream after thawing.
- Reheating: Gentle stovetop heat with occasional stirring; add extra broth if needed.
Final Thoughts
This Meatball Soup is a warm, comforting meal that brings all the flavors of Italian cooking into a single bowl. Juicy meatballs, al dente pasta, and a creamy tomato broth create a filling, satisfying dinner that’s ready in just 35 minutes.
Whether for a weeknight meal, cozy weekend lunch, or a family-friendly dinner, this soup hits all the right notes: easy, hearty, flavorful, and comforting.
Once you try it, it will become a go-to recipe for soups, pasta, and weeknight Italian meals.
Print
Meatball Soup: A Creamy, Comforting Italian Classic in One Pot
This creamy Italian meatball soup comes together in one pot with juicy meatballs and al dente pasta in a herb-filled creamy tomato broth. It’s like Sunday spaghetti in a comforting bowl of soup.
- Total Time: 35 minutes
- Yield: 8 servings
Ingredients
- 1 recipe homemade meatballs or 18–20 oz thawed/cooked frozen meatballs
- 1 tbsp olive oil
- 1 yellow onion, diced
- 6 cloves garlic, minced
- 1 tbsp Italian seasoning
- 2 tbsp tomato paste
- 32 oz chicken broth
- 28 oz can crushed tomatoes
- 8 oz uncooked rotini pasta
- 2 cups baby spinach
- ½ cup heavy cream
- Kosher salt and fresh cracked pepper
- Shaved Parmesan and chopped parsley for garnish
Instructions
- Prepare meatballs according to your recipe or package directions.
- Heat olive oil in a pot over medium heat. Add onion with salt and pepper, cook 6–8 minutes until slightly caramelized.
- Add garlic, Italian seasoning, tomato paste, salt, and pepper. Cook 1 minute, stirring frequently.
- Add a few splashes of broth to deglaze the pot.
- Stir in remaining broth, crushed tomatoes, uncooked pasta, and cooked meatballs. Season with salt and pepper.
- Bring to a simmer over medium-high heat. Reduce to low, cover, and simmer 12–15 minutes until pasta is al dente.
- Stir in spinach and heavy cream until spinach wilts and soup is warmed through.
- Adjust seasoning, garnish with Parmesan and parsley, and serve.
Notes
- Season each layer of ingredients for deeper flavor.
- Add a leftover Parmesan rind while simmering for extra depth.
- Add extra broth or cream if soup thickens too much while cooking.
- Prep Time: 10 minutes
- Cook Time: 25 minutes
- Category: Main Dish
- Method: Stove Top
- Cuisine: Italian/American



