I developed a creamy Italian meatball soup that pairs tender mini meatballs with a silky broth and one unexpected pantry ingredient that makes Mini Meatball Soup intriguingly different.

I didn’t plan to fall for a soup but this Creamy Italian Meatball Soup kept pulling me back. I fold in Italian sausage and finish with grated Parmesan cheese so every bite feels rich and a little sneaky, and honestly it’s the kind of Meatball Recipe Italian people post about late at night.
The first spoonful made me pause, like i heard something familiar but also totally new. It sits comfortably in the realm of Soup Dinner Recipes yet has a small unexpected edge, you’ll want to know where that creaminess comes from and why it tastes like a secret.
Ingredients

- ground beef brings hearty protein and iron but can be high in fat
- Italian sausage adds bold savory flavor, more fat and salty punch
- Parmesan gives nutty umami, protein and calcium, it is pretty salty
- heavy cream makes the broth silky and rich, lots of fat though
- baby spinach adds vitamins iron and fiber, wilts down quick in soup
- crushed tomatoes bring bright acidity, lycopene and a slightly sweet tang
- small pasta supplies carbs and chewy texture, counterbalances meatballs nicely
- carrots add subtle sweetness beta carotene and fiber, give some crunch
Ingredient Quantities
- 1 pound (450 g) ground beef
- 1/2 pound (225 g) Italian sausage, casings removed
- 1/2 cup plain breadcrumbs
- 3/4 cup grated Parmesan cheese, divided
- 1 large egg
- 2 tablespoons whole milk
- 2 tablespoons olive oil
- 1 medium yellow onion (about 1 cup)
- 2 medium carrots (about 1 cup)
- 2 celery stalks
- 5 cloves garlic
- 6 cups low sodium chicken broth
- 1 (14 ounce) can crushed tomatoes
- 1 cup small pasta (ditalini or small shells)
- 2 cups baby spinach
- 1 cup heavy cream
- 1 teaspoon Italian seasoning
- 2 tablespoons fresh parsley
- 1 teaspoon kosher salt
- 1/2 teaspoon freshly ground black pepper
- 1/4 teaspoon red pepper flakes (optional)
- Fresh basil or extra Parmesan for serving (optional)
How to Make this
1. In a big bowl mix 1 pound ground beef, 1/2 pound Italian sausage (casings removed), 1/2 cup plain breadcrumbs, about 1/2 cup of the grated Parmesan (reserve the rest), 1 large egg, 2 tablespoons whole milk, 1 tablespoon chopped fresh parsley, 1/2 teaspoon of the kosher salt and 1/4 teaspoon of the black pepper. Don’t overwork the meat, just combine until it holds together.
2. Shape the mixture into small meatballs about 1 inch wide, place them on a tray and pop them in the fridge for 10 to 15 minutes so they firm up a bit, that helps them not fall apart.
3. Heat 2 tablespoons olive oil in a large Dutch oven or heavy pot over medium high heat. Brown the meatballs in batches, turning so each side gets color, about 2 to 3 minutes per side. They do not need to be fully cooked through. Transfer browned meatballs to a plate.
4. In the same pot add 1 medium chopped yellow onion, 2 chopped carrots and 2 chopped celery stalks. Cook over medium heat until soft, about 6 to 8 minutes, scraping up the browned bits. Add 5 smashed or minced garlic cloves, 1 teaspoon Italian seasoning, the remaining 1/2 teaspoon kosher salt, the remaining 1/4 teaspoon black pepper and 1/4 teaspoon red pepper flakes if you want heat. Cook just 30 to 60 seconds more until fragrant.
5. Pour in 6 cups low sodium chicken broth and the 14 ounce can of crushed tomatoes, stir to combine and bring to a gentle simmer, scraping up any stuck bits from the bottom.
6. Return the browned meatballs to the pot, reduce the heat to low and simmer gently for 12 to 15 minutes so the meatballs finish cooking and the flavors meld.
7. Add 1 cup small pasta like ditalini or small shells to the simmering soup and cook until pasta is al dente, about 7 to 10 minutes depending on the pasta. Stir occasionally so pasta doesn’t stick to the meatballs.
8. Lower the heat, stir in 1 cup heavy cream, the remaining grated Parmesan, 2 cups baby spinach and 1 tablespoon chopped fresh parsley. Heat until the spinach wilts and the soup is hot but don’t let it boil hard or the cream can separate.
9. Taste and adjust seasoning with any extra salt, pepper or more red pepper flakes. Ladle into bowls and serve topped with extra Parmesan and fresh basil if you have it, a little extra parsley looks nice too.
Equipment Needed
1. Large mixing bowl for combining the beef, sausage and breadcrumbs, dont overwork it
2. Measuring cups and spoons for the milk, breadcrumbs, broth and seasonings
3. Box grater or microplane for the Parmesan
4. Chef knife and cutting board for the onion, carrots, celery and parsley
5. Baking sheet or tray to chill the shaped meatballs
6. Large Dutch oven or heavy pot for browning and simmering the soup
7. Slotted spoon or tongs to turn and lift the meatballs while browning
8. Wooden spoon or heatproof silicone spatula for sautéeing the veggies and stirring the soup
9. Colander for the pasta and a ladle for serving
FAQ
Creamy Italian Meatball Soup Recipe Substitutions and Variations
- Ground beef: swap with ground turkey or chicken for a leaner soup. Use the same weight, but add a tablespoon of olive oil or an extra egg so meatballs dont dry out; season a bit more since poultry is milder.
- Italian sausage: use ground pork plus 1 teaspoon fennel seed and 1 teaspoon Italian seasoning if you dont have links, or use turkey sausage for a lighter option. If using plain pork, add a pinch of salt and a little red pepper flakes to mimic the sausage kick.
- Breadcrumbs: sub with panko (same amount) for a lighter texture, crushed crackers, or quick-pulse old fashioned oats for a gluten free-ish binder. If using oats, pulse briefly so they hold together better.
- Heavy cream: replace with 3/4 cup whole milk plus 1/4 cup melted butter per cup of cream, or use full-fat coconut milk for a dairy free version; taste and adjust seasoning since swaps can change richness.
Pro Tips
1. Chill the meatballs after you shape them, even just 10 minutes makes a big difference, they hold together so much better and wont fall apart when you brown them.
2. Brown in batches so the pan never gets crowded, you want a good crust to build flavor. Save the browned bits in the pot and deglaze with a splash of broth or a little wine before adding more liquid, that stuff is pure flavor.
3. If you want leftovers that dont turn into mush, cook the pasta separately and add it to each bowl when you serve. Or if you insist on cooking pasta in the soup, only add it right near the end and be ready to eat it that day.
4. Heat the cream gently and off the boil so it doesnt separate, or temper it by whisking a few spoonfuls of hot soup into the cream before adding. Also toss a parmesan rind into the simmer while it cooks, remove before serving, it gives a deep savory boost.
5. For make ahead and freezing: cook the meatballs fully then freeze them on a tray before bagging so they wont stick together, reheat them straight in the simmering sauce. Add fresh herbs and extra parmesan at the end for brightness, dont cook the herbs too long or theyll lose their flavor.

Creamy Italian Meatball Soup Recipe
I developed a creamy Italian meatball soup that pairs tender mini meatballs with a silky broth and one unexpected pantry ingredient that makes Mini Meatball Soup intriguingly different.
6
servings
701
kcal
Equipment: 1. Large mixing bowl for combining the beef, sausage and breadcrumbs, dont overwork it
2. Measuring cups and spoons for the milk, breadcrumbs, broth and seasonings
3. Box grater or microplane for the Parmesan
4. Chef knife and cutting board for the onion, carrots, celery and parsley
5. Baking sheet or tray to chill the shaped meatballs
6. Large Dutch oven or heavy pot for browning and simmering the soup
7. Slotted spoon or tongs to turn and lift the meatballs while browning
8. Wooden spoon or heatproof silicone spatula for sautéeing the veggies and stirring the soup
9. Colander for the pasta and a ladle for serving
Ingredients
-
1 pound (450 g) ground beef
-
1/2 pound (225 g) Italian sausage, casings removed
-
1/2 cup plain breadcrumbs
-
3/4 cup grated Parmesan cheese, divided
-
1 large egg
-
2 tablespoons whole milk
-
2 tablespoons olive oil
-
1 medium yellow onion (about 1 cup)
-
2 medium carrots (about 1 cup)
-
2 celery stalks
-
5 cloves garlic
-
6 cups low sodium chicken broth
-
1 (14 ounce) can crushed tomatoes
-
1 cup small pasta (ditalini or small shells)
-
2 cups baby spinach
-
1 cup heavy cream
-
1 teaspoon Italian seasoning
-
2 tablespoons fresh parsley
-
1 teaspoon kosher salt
-
1/2 teaspoon freshly ground black pepper
-
1/4 teaspoon red pepper flakes (optional)
-
Fresh basil or extra Parmesan for serving (optional)
Directions
- In a big bowl mix 1 pound ground beef, 1/2 pound Italian sausage (casings removed), 1/2 cup plain breadcrumbs, about 1/2 cup of the grated Parmesan (reserve the rest), 1 large egg, 2 tablespoons whole milk, 1 tablespoon chopped fresh parsley, 1/2 teaspoon of the kosher salt and 1/4 teaspoon of the black pepper. Don’t overwork the meat, just combine until it holds together.
- Shape the mixture into small meatballs about 1 inch wide, place them on a tray and pop them in the fridge for 10 to 15 minutes so they firm up a bit, that helps them not fall apart.
- Heat 2 tablespoons olive oil in a large Dutch oven or heavy pot over medium high heat. Brown the meatballs in batches, turning so each side gets color, about 2 to 3 minutes per side. They do not need to be fully cooked through. Transfer browned meatballs to a plate.
- In the same pot add 1 medium chopped yellow onion, 2 chopped carrots and 2 chopped celery stalks. Cook over medium heat until soft, about 6 to 8 minutes, scraping up the browned bits. Add 5 smashed or minced garlic cloves, 1 teaspoon Italian seasoning, the remaining 1/2 teaspoon kosher salt, the remaining 1/4 teaspoon black pepper and 1/4 teaspoon red pepper flakes if you want heat. Cook just 30 to 60 seconds more until fragrant.
- Pour in 6 cups low sodium chicken broth and the 14 ounce can of crushed tomatoes, stir to combine and bring to a gentle simmer, scraping up any stuck bits from the bottom.
- Return the browned meatballs to the pot, reduce the heat to low and simmer gently for 12 to 15 minutes so the meatballs finish cooking and the flavors meld.
- Add 1 cup small pasta like ditalini or small shells to the simmering soup and cook until pasta is al dente, about 7 to 10 minutes depending on the pasta. Stir occasionally so pasta doesn’t stick to the meatballs.
- Lower the heat, stir in 1 cup heavy cream, the remaining grated Parmesan, 2 cups baby spinach and 1 tablespoon chopped fresh parsley. Heat until the spinach wilts and the soup is hot but don’t let it boil hard or the cream can separate.
- Taste and adjust seasoning with any extra salt, pepper or more red pepper flakes. Ladle into bowls and serve topped with extra Parmesan and fresh basil if you have it, a little extra parsley looks nice too.
Notes
- Below you’ll find my best estimate of this recipe’s nutrition facts. Treat the numbers as a guide rather than a rule—great food should nourish both body and spirit. Figures are approximate, and the website owner assumes no liability for any inaccuracies in this recipe.
Nutrition Facts
- Serving Size: 580g
- Total number of serves: 6
- Calories: 701kcal
- Fat: 49.3g
- Saturated Fat: 23.2g
- Trans Fat: 0.17g
- Polyunsaturated: 6.7g
- Monounsaturated: 19.3g
- Cholesterol: 209mg
- Sodium: 810mg
- Potassium: 775mg
- Carbohydrates: 29.2g
- Fiber: 3.2g
- Sugar: 2g
- Protein: 31.8g
- Vitamin A: 1861IU
- Vitamin C: 8mg
- Calcium: 181mg
- Iron: 3.3mg











