This soup is substantial enough for Sunday dinner, but I make it weeknight-friendly by baking the meatballs while I start the soup.
Homemade meatballs don’t add as much time as you’d think: roll them, get them in the oven, them chop and saute the vegetables while they bake.
The pasta cooks right in the broth, soaking up al that tomato, pesto, parmesan, and meatball flavor as it cooks. I especially love the pesto here. It’s a small addition that gives the broth way more flavor without needing to simmer it all afternoon.
Love a hearty Italian soup? You’ve got to try Instant Pot Lasagna Soup , ground turkey veggie soup, or white lasagna soup next.

Want to save time? Make a double batch the next time you make these air fryer meatballs or these gluten-free meatballs and throw them into the soup!
Why This Meatball Soup Works for a Weeknight
The homemade meatballs don’t turn this into a Sunday project. They bake while you start the soup, so you’re doing two things at once instead of browning meatballs in batches at the stove.
It’s also a full dinner in one bowl: beef, pasta, carrots, celery, tomatoes, and optional spinach.
For my kids, I can scoop out some of the meatballs and pasta separately and add Parmesan, which makes this one especially easy to serve everyone at the table.
And if you already have baked turkey meatballs in the freezer, use them! That’s one of my favorite ways to make this even faster.

Looking for more meatball recipes? Try firecracker meatballs, air fryer meatballs, or greek chicken meatballs.
Key Ingredients
You don’t need anything unusual for the meatballs or tomato broth, but a few extra ingredients make a big difference in the final soup. Find the exact amounts in the recipe card below.

- Panko breadcrumbs: Use regular or gluten-free panko. I like Aelia’s gluten-free Italian breadcrumbs.
- Ground beef: I like 80-85% lean beef here because there’s enough fat to keep the meatballs juicy.
- Parmesan cheese: Freshly grated parmesan goes into the meatballs, but don’t toss the rind. Simmer it right in the broth for extra savory flavor, then pull it out before serving.
- Onions, carrots and celery: This trio creates the flavor base for the broth. Add the optional spinach at the end so it just wilts.
- Tomatoes: diced tomatoes give the soup extra texture while tomato sauce makes the broth richer and more tomato-forward.
- Beef broth: start with 4 cups, then add more at the end as needed. The pasta will absorb broth as it cooks and continues to absorb it as the soup sits.
- Basil pesto: this is my secret ingredient for a really flavorful broth. Just 1/4 cup adds basil, garlic, parmesan, and richness without needing a long simmer. Homemade or store-bought both work.
- Short-cut pasta: Fusilli is my favorite because the twists hold onto the broth, but another small or shot pasta works too. Go by the package cook time and stop at al dente so it doesn’t get mushy in the soup.
How to Make Italian Meatball Soup
Mix and bake the meatballs
Mix the meatball ingredients just until combined, then scoop and roll into 3/4–1-inch meatballs. Arrange them on the prepared baking sheet and bake for 10-12 minutes while you start the soup. Keeping them small makes them easier to eat with a spoon and helps them cook evenly.


Start the Soup While They Bake
While the meatballs bake, heat the olive oil in a large Dutch oven over medium-high heat. Add the onion, celery, and carrots and cook for 3–4 minutes, until they begin to soften and the onion is translucent. Add the garlic and thyme and cook for another minute.

Build the Tomato Broth
Pour in the diced tomatoes, tomato sauce, and 4 cups of beef broth. Stir in the pesto, red pepper flakes, and Parmesan rind. Transfer the cooked meatballs to the soup and bring it to a boil.
Cook the Pasta in the Soup
Once boiling, add the pasta and cook until al dente. Use the package directions as your guide because timing varies by pasta shape and brand. Stir occasionally so the pasta doesn’t stick to the bottom of the pot.

Finish the Soup
Remove the Parmesan rind and reduce the heat. Stir in the fresh basil and spinach, if using. Add more beef broth as needed to reach the consistency you like, then taste and season with salt and pepper. Serve with plenty of freshly grated Parmesan and basil.

Molly’s Tips for the Best Meatball Soup
- Make small meatballs. I keep them around 3/4–1 inch so you can actually fit a meatball, pasta, and broth on one spoon. Smaller meatballs also cook more evenly.
- Stop the pasta at al dente. It continues to soften in the hot broth and absorbs even more liquid as the soup sits. This matters even more if you’re planning on leftovers.
- Expect the soup to thicken as it sits. The pasta keeps absorbing broth, so I usually add another splash of beef broth when reheating leftovers.
- Be extra careful with gluten-free pasta. I’ve found that cassava- and bean-based pastas break down more easily in leftover soup. If you’re making this specifically for meal prep, keep that in mind when choosing your pasta.
Gluten-free: Use gluten-free panko and your favorite gluten-free short pasta. Keep in mind that some GF pastas break down more quickly in leftover soup.
Dairy-free: Use nutritional yeast instead of Parmesan, your favorite dairy-free milk, and dairy-free pesto. Skip the Parmesan rind.
Storing and Reheating
The biggest thing to know about leftovers is that the pasta keeps absorbing the broth. The soup will be thicker the next day, so add more beef broth as you reheat it until it’s back to the consistency you like.
Fridge: Store cooled soup in an airtight container for 3–4 days.
Freezer: For the best texture, freeze the soup without the pasta and add freshly cooked pasta when you reheat it.
Reheat: Reheat leftovers gently on the stove or in the microwave, adding beef broth as needed to loosen the soup.

If you make this recipe, I’d love for you to give it a star rating ★ below. You can also tag me on Instagram so I can see it!
More Soup Recipes
- Instant Pot Tacos Soup
- Whole30 Zuppa Toscana
- Creamy Sausage Gnocchi Soup
- Creamy Chicken Tortilla Soup
- Instant Pot Lasagna Soup
- Healthy crock pot chicken tortilla soup
Italian Meatball Soup
Save this Recipe!
Ingredients
Italian Meatballs
- 1/2 cup panko bread crumbs gluten-free if needed
- 1/4 cup almond milk or whole milk
- 1 lb ground beef we used 85% lean
- 1 large egg
- 2 teaspoons Italian seasoning
- 1 teaspoon garlic powder
- 1/2 teaspoon kosher salt
- 1/2 cup finely grated parmesan cheese or nutritional yeast (for dairy-free option)
Soup
- 2 Tablespoons olive oil
- 2 celery ribs chopped
- 3 medium carrots peeled and sliced
- 1 small onion diced
- 3 cloves garlic minced
- 1 tablespoon fresh chopped thyme
- 1 14.5-ounce can diced tomatoes
- 1 15-ounce can tomato sauce
- 4 cups beef broth plus up to 2 cups more as needed
- 1/4 cup basil pesto homemade or store-bought
- 1 parmesan rind (the end of the parmesan wedge) optional*
- 1/4 teaspoon red pepper flakes
- 1 1/2 cups dry uncooked fusilli pasta or other shortcut pasta gluten-free if needed
- 2 tablespoons fresh chopped basil
- 3 cups fresh packed spinach optional
- Salt & pepper to taste
- Toppings: parmesan cheese, fresh basil and/or parsley
Instructions
- Preheat the oven to 400°F and line a large baking sheet with parchment paper.
- Add the meatball ingredients to a large bowl and use a spoon or clean hands to mix well. Use a tablespoon to scoop out the meatballs and roll them into 3/4 – 1 inch balls. Wet your hands slightly if the meatballs are sticking to your hands.
- Drop them on the prepared baking sheet and bake in the preheated oven for 10-12 minutes, until the meatballs reach an internal temp of 165.
- While the meatballs are cooking, start the soup. Add the olive oil to the bottom of a large stock pot or dutch oven over medium-high heat. When it’s hot and shimmering, add the chopped onion, celery and carrots and cook for 3-4 minutes until they’re soft and the onion is translucent. Add the minced garlic and thyme and cook for another minute.
- Pour in the diced tomatoes, tomato sauce, and 4 cups of beef broth. Stir it well then add the basil pesto, red pepper flakes, and parmesan rind if using.When the meatballs are done cooking, carefully transfer them to the soup.
- Increase the heat to high to bring the soup to a boil. Once it's boiling, cook according to the package directions until al dente, stirring occasionally to prevent sticking.
- When it’s done, remove the parmesan rind and turn the heat down to medium-low and stir in basil and spinach, if using. Taste and add salt and pepper as needed. Add up to 2 cups more beef stock if needed to reach your desired consistency.
- Serve the soup warm with parmesan cheese, more fresh basil and crusty bread if desired.
Notes
Video
Equipment
- Large Pot or Dutch Oven
- Sheet Pan
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.
This post may contain affiliate links. Read our disclosure policy.











This recipe is wonderful, thank you!
My one comment.. this definitely takes a lot more than 10 minutes of prep time! 😄
Very much worth the effort though!
This was so delicious!! The meatballs alone were so good, but then once you add them to the soup, they get very tender and even more flavorful. I will for sure be making this again!
Thank you so much Victoria!
My fiancé and I LOVED this meal! So hearty and yummy! I like to keep in mind meals that I could make for company/take to someone and this will be added to that list. Will definitely add to our rotation as well.
This one definitely makes a great dinner to take to others! We love it too:) Thanks!
This recipe is amazing! I followed the dairy-free instructions and added zucchini since I had some on hand. The meatballs are amazing and have probably ruined me for all other meatballs.
Thanks, Aubrey! Love that so much. We’ve tested these dairy free and love them too. Thank you!