
The first batch of meatballs leaves little browned bits on the bottom of the Dutch oven, and that’s exactly what I want. Those savory bits turn into the start of the broth for this Italian meatball soup with mini pasta and spinach, so nothing gets wiped away or wasted. The meatballs finish cooking right in the soup, where they stay tender and share their flavor with every spoonful.
I keep the vegetables diced small so they soften into the broth instead of competing with the meatballs and pasta. Ditalini gives the soup a cozy, substantial feel, while the spinach goes in at the very end and wilts quickly. The result is a tomato-rich soup with little bites of pasta, tender meatballs, and just enough green to brighten the bowl.

Kitchen Note
Mix the meatball ingredients only until they come together, then shape them without packing the mixture tightly. Overworking or compressing the beef makes the finished meatballs dense instead of tender.
Save this Italian meatball soup for a cozy dinner: tender beef meatballs, mini pasta, and spinach in tomato broth.
Why Crowding the Pot Costs These Meatballs Their Browned Edges
It’s tempting to fit every meatball into the pot at once, but a crowded pan traps steam around the beef. The meatballs then turn gray and release juices instead of developing the browned surfaces that give this soup its savory foundation. Browning them in two batches leaves room for the hot oil to do its job.
Those browned spots on the pot are part of the seasoning, not something to scrub away. When the tomatoes and broth go in, scraping the bottom loosens them and carries that concentrated beef flavor into the soup. The meatballs don’t need to cook through during browning; they’ll simmer in the broth with the pasta. This order gives the finished soup depth without adding another pan or a separate sauce.
What Each Ingredient Brings to the Meatballs and Broth

- Ground beef — The 85% lean blend keeps the meatballs flavorful without leaving as much excess fat as a fattier grind. Standard grocery-store ground beef works well here; extra-lean beef tends to make a firmer, drier meatball.
- Italian breadcrumbs and egg — Together, they hold the beef mixture while the crumbs help retain its juices. Plain breadcrumbs can stand in one-for-one, though the meatballs will have a milder herb flavor.
- Parmesan and parsley — Finely grated Parmesan distributes its savory, salty flavor throughout the meatballs. Pecorino Romano can replace it one-for-one, with a sharper and saltier result; fresh parsley gives a brighter note than dried.
- Garlic — Dividing the garlic lets it season both the meatballs and the soup base. Mince it finely so there aren’t large raw-tasting pieces in either part of the dish.
- Onion, carrots, and celery — These soften into the broth and give it a gentle vegetable sweetness. Dice them into similar-sized pieces so they cook at the same pace.
- Diced tomatoes and low-sodium chicken broth — The tomatoes give the soup its tomato-forward base, and low-sodium broth leaves room for the salt in the Parmesan and meatballs. Use canned diced tomatoes with their juices.
- Ditalini and baby spinach — Ditalini is small enough to fit naturally on a spoon; another mini pasta works too. Baby spinach is tender and wilts quickly, so it can go in at the finish without a long cook.
Build the Soup in the Same Pot as the Meatballs
Mix and Shape the Meatballs
Combine the beef, Italian breadcrumbs, Parmesan, egg, one clove of minced garlic, parsley, part of the salt, and part of the pepper in a medium bowl. Shape the mixture into 1-inch meatballs so they cook evenly in the soup. Keep the portions close in size; oversized meatballs take longer to cook through, while very small ones can lose their shape more easily.
Brown in Two Batches
Heat the olive oil in a 6-quart Dutch oven over medium heat. Brown the meatballs in two batches, turning them for 4 to 5 minutes per batch, then transfer them to a plate. They’ll continue cooking later, so this first stage is for browning rather than cooking the centers through.
Soften the Vegetables and Start the Broth
Add the onion, carrots, and celery to the pot and cook, stirring occasionally, for 5 to 7 minutes, until the onion begins to soften. Stir in the remaining garlic, Italian seasoning, and the rest of the salt and pepper; cook for 30 seconds, just until fragrant. Add the diced tomatoes and chicken broth, scraping up the browned bits from the bottom. Bring the broth to a boil over medium-high heat.
Simmer the Pasta, Meatballs, and Spinach
Add the meatballs and pasta, then reduce the heat to maintain a gentle simmer. Cook uncovered for 8 to 10 minutes, stirring occasionally, until the pasta is al dente and the centers of the meatballs reach 160°F. Stir in the spinach and cook for 1 to 2 minutes, until the leaves have wilted. Keep the simmer gentle rather than letting the soup boil hard.
Easy Swaps That Keep This Soup’s Texture in Balance
Make It Gluten-Free
Use gluten-free breadcrumbs in the meatballs and gluten-free mini pasta in the soup, keeping the quantities listed for each. The meatballs may feel a little softer depending on the crumb texture, and the pasta’s simmer time can vary, so use al dente as your doneness cue.
Give the Broth a Beefier Base
Replace the low-sodium chicken broth with low-sodium beef broth. It leans into the meatball flavor and makes the broth taste richer, while keeping the same cooking method and seasoning amounts.
Add a Smokier Tomato Note
Use fire-roasted diced tomatoes instead of regular diced tomatoes. They bring a gentle smoky edge to the broth without changing the soup’s texture or the order of the cooking steps.
Storage and Reheating
- Refrigerator: Refrigerate leftovers in shallow airtight containers within 2 hours and use them within 3 to 4 days. The pasta will absorb some broth and soften as it sits.
- Freezer: Freeze in airtight containers for up to 2 to 3 months for best quality. The soup freezes safely, though the pasta will be softer after thawing.
- Reheating: Warm on the stovetop over medium-low heat, stirring gently, until the soup reaches 165°F. Add a little broth if the pasta has thickened the soup; avoid a hard boil, which can make the pasta mushy.
Questions That Come Up When Making Italian Meatball Soup

Italian Meatball Soup with Mini Pasta and Spinach
Ingredients
Equipment
Method
- In a medium bowl, gently mix the ground beef, breadcrumbs, Parmesan, egg, 1 clove of garlic, parsley, 1/2 teaspoon of the salt, and 1/4 teaspoon of the pepper until just combined.
- Shape the mixture into 1-inch meatballs.
- Heat the olive oil in a 6-quart Dutch oven over medium heat.
- Brown the meatballs in 2 batches, turning them for 4 to 5 minutes per batch.
- Transfer the meatballs to a plate.
- Add the onion, carrots, and celery to the pot and cook, stirring occasionally, for 5 to 7 minutes, until the onion begins to soften.
- Stir in the remaining 2 cloves of garlic, Italian seasoning, remaining 1/2 teaspoon salt, and remaining 1/2 teaspoon pepper.
- Cook for 30 seconds.
- Add the diced tomatoes and chicken broth, scraping up any browned bits.
- Bring to a boil over medium-high heat.
- Add the meatballs and pasta.
- Reduce the heat to maintain a gentle simmer.
- Cook uncovered for 8 to 10 minutes, stirring occasionally, until the pasta is al dente and the meatballs reach 160°F in the center.
- Stir in the spinach.
- Cook for 1 to 2 minutes, until wilted.