Love this? Pin it for later!
There's something magical about ladling steaming bowls of Italian wedding soup on a chilly evening. The aroma of savory broth, tender mini-meatballs, and wilted spinach brings back memories of Sunday dinners at my grandmother's house, where the soup pot never seemed to empty and the conversation flowed as freely as the wine. This isn't just any soup—it's a celebration of love, family, and the beautiful marriage of flavors that gives this dish its name.
After years of perfecting this recipe, I've discovered the secrets to creating the most flavorful broth, the most tender meatballs, and achieving that perfect balance of ingredients that makes every spoonful feel like a warm hug. Whether you're planning a cozy family dinner, need comfort food for a friend going through a tough time, or want to impress guests with an authentic Italian classic, this hearty wedding soup delivers on all fronts.
The beauty of this recipe lies in its layers of flavor—starting with a rich chicken broth infused with aromatic vegetables and herbs, followed by bite-sized pork and beef meatballs that stay incredibly tender, and finished with fresh spinach and pasta that cook directly in the soup. It's a complete meal in one pot, and I guarantee you'll find yourself making it again and again.
Why This Recipe Works
- Perfect Meatball Texture: Using a combination of ground pork and beef with milk-soaked breadcrumbs creates incredibly tender, juicy mini-meatballs that stay moist even when simmered in soup.
- Flavor-Infused Broth: Starting with a homemade-style broth enhanced with Parmesan rind, fresh herbs, and aromatic vegetables creates a depth of flavor that store-bought broth alone can't match.
- Strategic Cooking Sequence: Adding ingredients in the right order ensures each component is perfectly cooked—the pasta stays al dente, the spinach maintains its vibrant color, and the meatballs remain intact.
- Make-Ahead Friendly: The soup (minus the pasta and spinach) can be prepared up to 3 days in advance, with these final ingredients added just before serving for optimal texture and color.
- Complete Nutrition: Packed with protein from the meatballs, vitamins from the spinach, and comforting carbohydrates from the pasta, this soup is a balanced meal in a bowl.
- Restaurant-Quality Results: The combination of fresh herbs, quality ingredients, and proper technique elevates this humble soup to something worthy of the finest Italian restaurants.
Ingredients You'll Need
The success of this Italian wedding soup lies in the quality of its ingredients. Each component plays a crucial role in building the complex flavors that make this soup so beloved. Here's what you'll need and why each ingredient matters:
For the Mini Meatballs:
Ground Pork and Beef: The combination creates the perfect fat ratio—pork adds richness and flavor while beef provides structure. Look for 80% lean beef for optimal juiciness. If you can't find ground pork, you can substitute with ground turkey, but add an extra tablespoon of olive oil for moisture.
Parmesan Cheese: Use freshly grated Parmigiano-Reggiano for the best flavor. Pre-grated cheese often contains anti-caking agents that affect texture. Save the rind for the broth!
Fresh Breadcrumbs: Make your own by pulsing day-old Italian or sourdough bread in a food processor. Soaked in milk, they create incredibly tender meatballs. In a pinch, panko breadcrumbs work, but reduce the quantity by 25%.
Fresh Herbs: Flat-leaf parsley and fresh oregano make a huge difference in flavor. If you must use dried herbs, reduce the quantity by half.
For the Soup Base:
Chicken Broth: Use low-sodium broth so you can control the salt level. If you have homemade chicken stock, this is where to use it—it will make your soup extraordinary.
Aromatics: A classic mirepoix of onion, carrots, and celery forms the flavor foundation. Dice them uniformly for even cooking and attractive presentation.
Parmesan Rind: Don't throw away those Parmesan rinds! They add incredible umami depth to the broth. If you don't have one, add an extra ¼ cup of grated Parmesan to the broth.
Pasta: Traditional acini di pepe is perfect, but orzo, pastina, or even small stars work well. The key is using a small shape that cooks quickly and is easy to eat with a spoon.
For Finishing:
Fresh Spinach: Baby spinach is tender and requires no prep, but regular spinach works too—just remove any tough stems. The spinach wilts quickly, so add it at the very end.
Eggs and Parmesan: The traditional egg-and-cheese mixture stirred in at the end creates silky strands throughout the soup, a technique borrowed from Italian stracciatella.
How to Make Hearty Italian Wedding Soup with Tiny Meatballs and Spinach
Prepare the Meatball Mixture
In a large bowl, combine ½ cup fresh breadcrumbs with ¼ cup whole milk. Let this mixture sit for 5 minutes until the breadcrumbs absorb the milk completely. This step, called a panade, is the secret to incredibly tender meatballs. Add ½ pound ground pork, ½ pound ground beef, ¼ cup grated Parmesan, 1 beaten egg, 2 minced garlic cloves, 2 tablespoons chopped parsley, 1 teaspoon salt, ½ teaspoon black pepper, and ½ teaspoon dried oregano. Mix gently with your hands just until combined—overmixing makes tough meatballs. The mixture should be moist but hold its shape when formed.
Form the Mini Meatballs
Using a small cookie scoop or two spoons, form the meat mixture into ¾-inch balls (about the size of a marble). Roll them gently between your palms for uniform shape. Place them on a parchment-lined baking sheet. You should have about 60-70 tiny meatballs. If your mixture is too soft to roll, refrigerate it for 15 minutes to firm up. The small size is traditional and ensures they cook quickly and are easy to eat with a spoon. Cover with plastic wrap and refrigerate while you prepare the soup base.
Build the Flavor Base
Heat 2 tablespoons olive oil in a large Dutch oven or heavy-bottomed pot over medium heat. Add 1 diced onion, 2 diced carrots, and 2 diced celery stalks. Cook for 6-8 minutes, stirring occasionally, until the vegetables soften and the onion becomes translucent but not browned. Add 3 minced garlic cloves and cook for another minute until fragrant. This mirepoix creates the aromatic foundation of your soup.
Create the Broth
Pour in 8 cups low-sodium chicken broth and add the Parmesan rind, 2 bay leaves, 1 teaspoon dried thyme, and ½ teaspoon black pepper. Bring to a boil, then reduce heat and simmer for 15 minutes to allow the flavors to meld. The Parmesan rind will slowly release its umami goodness into the broth. If you don't have a rind, add ¼ cup grated Parmesan instead. Taste and season with salt as needed—this will depend on the saltiness of your broth.
Cook the Meatballs
Gently drop the chilled meatballs into the simmering broth one by one. They'll sink at first but will float as they cook. Reduce heat to maintain a gentle simmer and cook for 8-10 minutes, stirring occasionally with a wooden spoon, being careful not to break the meatballs. They're done when they're no longer pink in the center and float to the surface. Remove one and cut it in half to check if needed.
Add the Pasta
Add ¾ cup acini di pepe (or other small pasta) to the soup. Stir well to prevent sticking, and cook according to package directions for al dente, usually 7-9 minutes. Stir occasionally to prevent the pasta from sticking to the bottom of the pot. The pasta will absorb some of the broth, so add 1-2 cups of hot water if the soup seems too thick. You want it to be brothy enough to be called soup, not stew.
Finish with Spinach and Egg
Reduce heat to low. Stir in 5 ounces of fresh spinach and cook for 1-2 minutes until wilted. In a small bowl, beat 2 eggs with ¼ cup grated Parmesan cheese. Slowly drizzle this mixture into the soup while stirring gently with a fork to create thin strands of egg throughout. This traditional technique adds richness and beautiful texture. Remove from heat immediately—overcooking will make the eggs rubbery.
Final Seasoning and Serve
Remove the bay leaves and Parmesan rind. Taste and adjust seasoning with salt and pepper as needed. The soup should be well-seasoned but not overly salty. Ladle into warm bowls and garnish with extra grated Parmesan cheese and a drizzle of good olive oil. Serve immediately with crusty Italian bread for a complete meal. Leftovers will keep for up to 3 days in the refrigerator, though you may need to add more broth when reheating as the pasta will continue to absorb liquid.
Expert Tips
Temperature Control
Keep the soup at a gentle simmer, not a rolling boil. Vigorous boiling can break the meatballs apart and make the broth cloudy. A gentle simmer ensures the meatballs cook through evenly while maintaining their shape.
Make-Ahead Strategy
Prepare the meatballs up to 2 days ahead and store them uncooked between sheets of parchment paper. You can also make the broth base ahead and refrigerate. Just add the pasta and spinach when reheating for optimal texture.
Uniform Meatballs
Use a small cookie scoop or melon baller to portion the meatballs quickly and evenly. Wet your hands with cold water when rolling to prevent sticking and create smooth, round meatballs.
Broth Consistency
The pasta will continue to absorb broth as it sits. Keep extra hot broth or water on hand to thin the soup when serving leftovers. The soup should be brothy, not stew-like.
Quick Cooling
If you need to cool the soup quickly for storage, place the pot in an ice bath and stir frequently. Never leave soup at room temperature for more than 2 hours to prevent bacterial growth.
Egg Ribbon Technique
For the most beautiful egg ribbons, drizzle the egg mixture in a thin stream while stirring the soup in a circular motion with a fork. The soup should not be boiling—just hot enough to gently cook the eggs.
Variations to Try
Turkey Meatballs
Substitute ground turkey for both the pork and beef. Add 2 tablespoons olive oil to compensate for the leaner meat, and include 1 tablespoon tomato paste for richness and color.
Vegetarian Version
Replace meatballs with 1-inch cubes of firm tofu that have been marinated in soy sauce and Italian herbs. Use vegetable broth instead of chicken broth and add white beans for protein.
Escarole Substitute
Traditional Italian wedding soup often uses escarole instead of spinach. It has a slightly bitter flavor that pairs beautifully with the rich broth. Add it during the last 5 minutes of cooking.
Lemon Brightness
Add the zest of one lemon to the meatball mixture and finish the soup with 2 tablespoons fresh lemon juice. This brightens the rich flavors and adds a lovely freshness.
Storage Tips
Refrigeration
Store leftover soup in an airtight container in the refrigerator for up to 3 days. The pasta will continue to absorb liquid, so the soup will thicken. When reheating, add additional broth or water to achieve the desired consistency. Reheat gently over medium heat, stirring occasionally, until heated through.
Pro tip: If you know you'll have leftovers, consider cooking only half the pasta initially and cooking the rest separately to add when reheating. This prevents the pasta from becoming mushy.
Freezing
This soup freezes well, but it's best to freeze it without the pasta and spinach. Prepare the soup through adding the meatballs to the broth, then cool completely and freeze in airtight containers for up to 3 months. When ready to serve, thaw overnight in the refrigerator, bring to a simmer, then add fresh pasta and spinach.
If freezing complete soup, undercook the pasta slightly so it retains some texture after thawing and reheating.
Make-Ahead Components
The meatballs can be formed and refrigerated up to 2 days ahead, or frozen for up to 3 months. Freeze them on a baking sheet, then transfer to a freezer bag. The broth base (without pasta and spinach) can be made up to 4 days ahead and refrigerated, or frozen for up to 6 months. This makes assembly quick and easy on busy days.
When making ahead, reserve some of the cooking liquid from the meatballs to add back when reheating—it contains lots of flavor.
Frequently Asked Questions
Despite its name, Italian wedding soup isn't actually served at weddings. The "wedding" refers to the perfect marriage of flavors between the meat and vegetables. The Italian name is "minestra maritata" (married soup), referring to this harmonious combination of ingredients that creates something greater than the sum of its parts.
While homemade meatballs are traditional and provide the best texture and flavor, you can use store-bought in a pinch. Look for small, cocktail-size meatballs (about ¾-inch diameter). If using frozen meatballs, thaw them first and reduce the cooking time to 5-6 minutes since they're already cooked.
Meatballs fall apart when there's not enough binder (egg and breadcrumbs) or if the mixture is overworked. Make sure your breadcrumbs are properly soaked in milk before mixing, and handle the meat gently. Also, ensure the broth is at a gentle simmer, not a vigorous boil, when adding the meatballs.
Yes! Brown the meatballs first for better flavor, then add all ingredients except pasta and spinach to the slow cooker. Cook on low for 6-7 hours or high for 3-4 hours. Add the pasta during the last 30 minutes and the spinach during the last 5 minutes. The egg mixture should be added at the end as directed in the stovetop method.
Any small pasta shape works well: orzo, pastina, stelline (tiny stars), ditalini, or even broken spaghetti. Cooking times may vary, so follow package directions for al dente. You can also use pearl couscous, though it's not traditional. For a low-carb option, substitute cauliflower rice added during the last 5 minutes of cooking.
The soup can easily be made gluten-free by using gluten-free breadcrumbs in the meatballs and substituting the pasta with a gluten-free small pasta shape or rice. Check that your chicken broth is gluten-free (some brands contain wheat). The rest of the ingredients are naturally gluten-free.
Hearty Italian Wedding Soup with Tiny Meatballs and Spinach
Ingredients
Instructions
- Make Meatballs: Soak breadcrumbs in milk for 5 minutes. Mix with pork, beef, Parmesan, egg, garlic, parsley, salt, pepper, and oregano. Form into ¾-inch meatballs and refrigerate.
- Sauté Vegetables: Heat olive oil in a large pot. Cook onion, carrots, and celery until softened, 6-8 minutes. Add garlic and cook 1 minute more.
- Build Broth: Add chicken broth, Parmesan rind, bay leaves, thyme, and pepper. Simmer 15 minutes. Season with salt as needed.
- Cook Meatballs: Gently add meatballs to simmering broth. Cook 8-10 minutes until cooked through and floating.
- Add Pasta: Stir in acini di pepe and cook according to package directions until al dente, 7-9 minutes.
- Finish Soup: Add spinach and cook 1-2 minutes until wilted. Beat eggs with Parmesan and drizzle into soup while stirring gently. Serve hot with extra Parmesan.
Recipe Notes
For best results, keep the soup at a gentle simmer throughout cooking. The soup will thicken as it sits; thin with additional broth when reheating. The egg mixture should be added off-heat to prevent curdling.
