Go Back
+ servings
Hearty Italian Wedding soup with meatballs and spinach
Jon Simon

Italian Wedding Soup

No ratings yet
The real Neapolitan classic — tender mini meatballs simmered in rich chicken broth with tiny pasta, escarole or spinach, and silky egg ribbons. Ready in 45 minutes from a cold start, serves six, and tastes like it simmered all afternoon.
The translation of minestra maritata — "married soup" — refers to the pairing of meat and bitter greens, not to a ceremony.
Prep Time 20 minutes
Cook Time 25 minutes
Total Time 45 minutes

Ingredients
 
 

For the meatballs
  • 8 ounces ground beef 80/20
  • 8 ounces ground pork or substitute additional ground beef or ground chicken
  • cup panko or fresh breadcrumbs
  • 2 tablespoons whole milk for soaking the breadcrumbs
  • ¼ cup Parmesan cheese finely grated
  • 1 egg large, lightly beaten
  • 2 cloves garlic minced
  • 2 tablespoons fresh parsley finely chopped
  • ½ teaspoon Italian seasoning
  • ½ teaspoon salt
  • ¼ teaspoon black pepper freshly ground
  • 1 pinch nutmeg freshly grated; optional but traditional
For the soup
  • 1 tablespoon olive oil
  • 1 yellow onion small; finely diced
  • 1 carrot medium; finely diced
  • 2 stalks celery finely diced
  • 3 cloves garlic minced
  • 8 cups chicken broth low-sodium; homemade or good-quality store-bought
  • ½ cup acini di pepe or substitute pastina, ditalini, or orzo
  • 6 cups baby spinach packed; or substitute 4 packed cups of chopped escarole
  • 2 eggs large, beaten — for the egg ribbon
  • ½ cup Parmesan cheese grated; plus more for serving
  • 1 teaspoon lemon zest from about half a lemon
  • 1 tablespoon lemon juice freshly squeezed
  • fresh parsley for garnish

Equipment

  • 1 Large dutch oven or soup pot
  • 1 Rimmed baking sheet
  • 1 Fork (for mixing and for egg ribbons)
  • 1 Microplane or fine grater

Method
 

Make the meatballs
  1. Preheat oven to 400°F (200°C) and line a rimmed baking sheet with parchment paper.
  2. In a small bowl, combine the breadcrumbs and milk and let sit for 2 minutes — the breadcrumbs should be fully moistened. This Italian panade is what keeps the meatballs tender.
  3. In a large mixing bowl, combine the ground beef, ground pork, soaked breadcrumbs, grated Parmesan, beaten egg, minced garlic, parsley, Italian seasoning, salt, pepper, and nutmeg. Mix with a fork — not your hands — just until the ingredients are evenly distributed, about 20 seconds. Overmixing makes the meatballs dense.
  4. Roll the mixture into marble-sized meatballs, about 1 teaspoon each — you should get 50 to 60 small meatballs. Place them on the prepared sheet with a little space between each. Bake for 10 to 12 minutes, until lightly browned and just cooked through. Set aside.
Build the soup
  1. While the meatballs bake, warm the olive oil in a large Dutch oven or soup pot over medium heat. Add the diced onion, carrot, and celery, and cook for 6 to 7 minutes, stirring occasionally, until the vegetables are soft and the onion is translucent.
  2. Stir in the minced garlic and cook for 30 seconds, until fragrant. Pour in the chicken broth, bring to a simmer, and let cook gently for 5 minutes to marry the flavours.
  3. Add the acini di pepe and the baked meatballs. Simmer for 8 to 10 minutes, or until the pasta is al dente. Stir occasionally to keep the pasta from sticking to the bottom of the pot.
Finish the bowl
  1. Reduce the heat so the broth is at the gentlest simmer (not a rolling boil). In a slow, steady stream, pour the beaten eggs into the broth while stirring slowly in one direction with a fork. The eggs will set into delicate ribbons within 30 seconds.
  2. Cut the heat. Stir in the baby spinach, ½ cup of grated Parmesan, the lemon zest, and lemon juice. The residual heat will wilt the spinach in under a minute. If using escarole, stir it in 2 minutes earlier so it tenderises.
  3. Taste and adjust salt and pepper. Ladle into warm bowls, top with extra grated Parmesan and a scatter of fresh parsley, and serve immediately with crusty Italian bread.

Nutrition

Serving: 1servingCalories: 340kcalCarbohydrates: 23gProtein: 24gFat: 15gSaturated Fat: 5.5gCholesterol: 120mgSodium: 720mgFiber: 2gSugar: 3g

Notes

Net carbs: 21g per serving (23g total carbs minus 2g fibre).
Keep the meatballs small: Marble-sized — about 1 teaspoon each. A pound of meat should give you 50 to 60 meatballs, not 20. Small meatballs cook fast, stay tender, and fit on a spoon next to the pasta.
Soak the breadcrumbs: The Italian panade technique — breadcrumbs soaked in milk before mixing — is the single most important step for tender meatballs. Don't skip it.
Mix gently: Twenty seconds with a fork is enough. Compacted meatballs turn rubbery in the broth.
Egg ribbons: Keep the broth at a gentle simmer, not a hard boil. Pour the beaten eggs in a thin stream while stirring slowly in one direction. A rolling boil will scramble them into clumps instead of ribbons.
Add the spinach off the heat: Residual heat wilts baby spinach in under a minute and keeps the colour bright. If using escarole, stir it in 2 minutes earlier and let it tenderise.
Pasta substitutions: Acini di pepe is classic. Pastina, ditalini, orzo, and small stelline all work. Anything small enough to fit on a spoon next to a meatball.
Refrigerator storage: Up to 4 days in an airtight container. The pasta will continue absorbing broth as it sits, so leftovers will be thicker on day two. To keep leftovers brothy, cook the pasta separately and combine portions on the plate.
Freezer storage: Freeze the meatball-broth-vegetable base (without the pasta and without the egg ribbon) for up to 3 months. Cook fresh pasta and stream in beaten eggs when reheating.
Reheating: Stovetop over gentle heat with the lid on, just until the meatballs are warmed through. Microwave at 60% power in 90-second bursts, stirring between each.

Tried this recipe?

Let us know how it was!
QR Code linking back to recipe