Meatball Wedding Soup is the Italian-American classic that shows up at weddings, Sunday dinners, and honestly any night you want a bowl of comfort. You get juicy little meatballs, silky escarole, and tender acini di pepe pasta all swimming in a golden chicken broth. It tastes like a restaurant bowl but comes together in one pot on your own stove.
Advertisements1
The name comes from the Italian phrase for 'married soup' – minestra maritata – because the greens and the meat are 'married' together in the broth. In Italian-American kitchens, that marriage got its own twist: tiny meatballs and pastina. My version keeps the meatballs small (about 1 inch) so they cook fast and stay tender, and I stir an egg-and-parmesan mixture into the hot broth at the end for that signature silky finish.
You do not need a special occasion. A pot of this soup on a Tuesday, with crusty bread and a shower of parmesan, is exactly the kind of small effort that makes a weeknight feel generous.
Why You'll Love This Recipe
About the Ingredients
1 lb (450g) ground beef (80/20 blend)
The 80/20 ratio gives you juicy meatballs; anything leaner turns dry after poaching. Substitute ground turkey or a beef-pork mix if you prefer, but add 1 extra tablespoon of olive oil to lean meats.
1 lb (450g) ground pork
Pork keeps the meatballs tender and adds a mild sweetness. If pork is not your thing, swap in ground chicken thigh, which has more fat than breast and holds up better.
3/4 cup (75g) plain breadcrumbs
Use fine dry breadcrumbs, not panko, so the meatballs bind tightly. Stale bread pulsed in a blender works beautifully and tastes even better.
2 large eggs, divided
One egg goes into the meatball mix and one gets whisked into the broth at the end. Bring them to room temperature so they bind more evenly.
3/4 cup (60g) grated Parmesan, divided
Buy a wedge and grate it yourself; pre-shredded cheese has anti-caking starch that keeps it from melting smoothly. Pecorino Romano is a sharper, saltier swap – use half if you do.
1/2 cup (50g) finely minced yellow onion
Grate the onion on a box grater so it disappears into the meatballs and releases moisture. Shallots or a small leek work just as well.
8 cups (1.9L) low-sodium chicken broth
Low-sodium lets you control the final seasoning since the parmesan and meatballs both add salt. For a deeper flavor, use half broth and half homemade stock.
1 head escarole (about 1 lb / 450g), chopped
Escarole is the traditional green – slightly bitter, silky when cooked. If you cannot find it, curly endive or baby spinach (added in the last 2 minutes) are good stand-ins.
3/4 cup (120g) acini di pepe pasta
These tiny 'peppercorn' pasta beads are classic; orzo or ditalini also work but need 2-3 extra minutes. Cook pasta separately if you plan on leftovers so it does not soak up all the broth.
2 tbsp olive oil
Regular, not extra-virgin, is fine here since it is just for softening the aromatics. Avocado oil is a neutral substitute.
3 garlic cloves, minced
Fresh garlic only – jarred garlic tastes flat. Mince it fine so it does not burn in the hot oil.
1/2 tsp kosher salt, 1/4 tsp black pepper, plus more to taste
Kosher salt is less salty by volume than table salt, so if you only have table salt, use half. Taste the broth before serving and adjust.
Tips & Tricks
- Do not overmix the meatball mixture. Stop as soon as the ingredients come together, or the meatballs turn dense and bouncy instead of tender.
- Keep the meatballs small and uniform, about 1 inch. Bigger meatballs need longer poaching and often dry out before the center is cooked through.
- Add the pasta at the end and watch it closely. Acini di pepe goes from al dente to mushy in about 90 seconds, so set a timer.
- Taste before you salt. The parmesan, broth, and meatballs all carry salt, and the broth reduces as it simmers, concentrating the seasoning.
Pro Tips
Step-by-Step Instructions
1. Mix the meatballs
In a large bowl, combine the beef, pork, breadcrumbs, 1 egg, 1/2 cup (40g) parmesan, grated onion, garlic, 1/2 tsp salt, and 1/4 tsp pepper. Mix with your hands just until combined, then roll into 1-inch balls (you should get about 40).
2. Chill the meatballs
Place the meatballs on a parchment-lined sheet pan and refrigerate for 15 minutes. This rest firms them up so they hold their round shape when they hit the hot broth.
3. Sear half the meatballs
Heat 2 tbsp olive oil in a large Dutch oven over medium-high heat (about 375F / 190C). Add half the meatballs and sear 2-3 minutes per side until golden brown on the outside; they will not be cooked through yet. Transfer to a plate.
4. Soften the aromatics
Lower the heat to medium, add the onion to the pot, and cook 4-5 minutes until translucent and fragrant. Add the garlic and cook 30 seconds until it smells nutty – do not let it brown.
5. Simmer the broth
Pour in the chicken broth and scrape up the browned bits with a wooden spoon. Bring to a gentle boil, then reduce to a simmer (about 200F / 93C) and add the raw meatballs and the seared ones. Simmer 12-15 minutes, until the meatballs float and read 165F (74C) on an instant-read thermometer.
6. Add the escarole
Stir in the chopped escarole and simmer 5-6 minutes, until the leaves are wilted, silky, and deep green. The soup should smell sweet and slightly peppery.
7. Cook the pasta
Add the acini di pepe and simmer 6-8 minutes, stirring occasionally, until the pasta is al dente – tender with a tiny bit of bite at the center. It should look like tiny pearls floating in the broth.
8. Finish with egg and parmesan
In a small bowl, whisk the remaining egg with the remaining 1/4 cup (20g) parmesan. Off the heat, slowly stream the mixture into the soup while stirring constantly; the broth will turn silky and slightly cloudy. Season to taste and serve hot with extra parmesan.
Delicious Variations
Chicken Meatball Wedding Soup
Swap both meats for 2 lbs (900g) ground chicken thigh and add 1 tsp dried oregano to the mix for a lighter, herbier bowl.
Lemon-Dill Wedding Soup
Add the zest of 1 lemon and 2 tbsp chopped fresh dill with the escarole for a bright, Greek-leaning twist that cuts the richness.
Creamy Wedding Soup
Stir 1/2 cup (120ml) heavy cream in with the egg mixture for a richer, bisque-like texture that is lovely on cold nights.
How to Store Meatball Wedding Soup
Refrigerator
Store in an airtight container in the refrigerator for up to 4 days. The pasta will keep absorbing broth, so add a splash of stock when reheating.
Freezer
Freeze in portion-sized containers for up to 3 months. For best results, freeze without the pasta and boil fresh acini di pepe when you reheat.
Reheating
Reheat gently on the stovetop over medium-low heat (about 165F / 74C) for 5-7 minutes, stirring occasionally. Avoid a hard boil, which can break the meatballs apart.
Frequently Asked Questions
Q: What is wedding soup made of?
Wedding soup is made of small pork-and-beef meatballs, bitter greens like escarole, tiny pasta such as acini di pepe, and a rich chicken broth finished with egg and parmesan. The Italian name, minestra maritata, means 'married soup' and refers to the pairing of greens and meat.
Q: Why is it called wedding soup if it is not served at weddings?
The name is a mistranslation of minestra maritata, which means 'married soup' and refers to the marriage of flavors between the greens and the meat. It was never exclusively a wedding dish in Italy; it was a hearty everyday soup.
Q: Can I use frozen meatballs for wedding soup?
Yes, frozen meatballs work in a pinch – use about 40 small ones and simmer them 15-18 minutes straight in the broth. Homemade meatballs taste better because you control the seasoning and texture, but frozen saves about 20 minutes.
Q: How do I keep the pasta from getting mushy in wedding soup?
Cook the acini di pepe separately and add it to each bowl just before serving, or cook it in the soup only when you plan to eat it all that day. Stored pasta keeps absorbing broth, so separate cooking is best for leftovers.
Q: What can I use instead of escarole in wedding soup?
Curly endive, kale, or baby spinach all work as substitutes for escarole. Kale needs 8-10 minutes to soften, while baby spinach only needs 1-2 minutes, so adjust the simmer time accordingly.
Make this Meatball Wedding Soup this week and see how one pot can turn a regular Tuesday into something that feels like a celebration. Grab a loaf of crusty bread, grate a little extra parmesan over each bowl, and watch everyone go back for seconds. Small steps, big change.
Meatball Wedding Soup
Meatball Wedding Soup delivers tender homemade meatballs, escarole, and tiny pasta in a rich broth that feeds a crowd in one pot.
🧂 Ingredients
- 1 lb (450g) ground beef (80/20 blend)
- 1 lb (450g) ground pork
- 3/4 cup (75g) plain breadcrumbs
- 2 large eggs, divided
- 3/4 cup (60g) grated Parmesan, divided
- 1/2 cup (50g) finely minced yellow onion
- 8 cups (1.9L) low-sodium chicken broth
- 1 head escarole (about 1 lb / 450g), chopped
- 3/4 cup (120g) acini di pepe pasta
- 2 tbsp olive oil
- 3 garlic cloves, minced
- 1/2 tsp kosher salt, 1/4 tsp black pepper, plus more to taste
📋 Instructions
- 1Mix the meatballs — In a large bowl, combine the beef, pork, breadcrumbs, 1 egg, 1/2 cup (40g) parmesan, grated onion, garlic, 1/2 tsp salt, and 1/4 tsp pepper. Mix with your hands just until combined, then roll into 1-inch balls (you should get about 40).
- 2Chill the meatballs — Place the meatballs on a parchment-lined sheet pan and refrigerate for 15 minutes. This rest firms them up so they hold their round shape when they hit the hot broth.
- 3Sear half the meatballs — Heat 2 tbsp olive oil in a large Dutch oven over medium-high heat (about 375F / 190C). Add half the meatballs and sear 2-3 minutes per side until golden brown on the outside; they will not be cooked through yet. Transfer to a plate.
- 4Soften the aromatics — Lower the heat to medium, add the onion to the pot, and cook 4-5 minutes until translucent and fragrant. Add the garlic and cook 30 seconds until it smells nutty – do not let it brown.
- 5Simmer the broth — Pour in the chicken broth and scrape up the browned bits with a wooden spoon. Bring to a gentle boil, then reduce to a simmer (about 200F / 93C) and add the raw meatballs and the seared ones. Simmer 12-15 minutes, until the meatballs float and read 165F (74C) on an instant-read thermometer.
- 6Add the escarole — Stir in the chopped escarole and simmer 5-6 minutes, until the leaves are wilted, silky, and deep green. The soup should smell sweet and slightly peppery.
- 7Cook the pasta — Add the acini di pepe and simmer 6-8 minutes, stirring occasionally, until the pasta is al dente – tender with a tiny bit of bite at the center. It should look like tiny pearls floating in the broth.
- 8Finish with egg and parmesan — In a small bowl, whisk the remaining egg with the remaining 1/4 cup (20g) parmesan. Off the heat, slowly stream the mixture into the soup while stirring constantly; the broth will turn silky and slightly cloudy. Season to taste and serve hot with extra parmesan.


