My family’s Italian Wedding Soup recipe, with tender beef and pork meatballs, escarole, and Acini di pepe pasta, simmered in Parmigiano Reggiano infused chicken broth. This hearty one-pot meal is one of our favorite ways to warm up on a cold night.

Before You Start Cooking
- Italian-American “Wedding Soup” is a variation of Minestra Maritata, a Neapolitan/Southern Italian dish meaning “married soup.” The name refers to the soup’s union of broth, leafy greens (often bitter), and meat.
- This recipe calls for Acini di Pepe, a tiny pearl-shaped pasta meaning “seeds of pepper” (peppercorns) in Italian. It’s a classic addition to Italian Wedding Soup.
- While some families finish this soup with stracciatella—beaten eggs mixed with grated cheese, drizzled into the hot broth—mine does not. My family enjoys stracciatella as its own soup, without meatballs or pasta.
How to Make Italian Wedding Soup
This dish comes together in two main steps: shaping and browning the meatballs and simmering the soup. The most time-consuming part is making the meatballs. If you have a helper in the kitchen, an extra set of hands speeds up the process!
Step 1: Make the Meatball Mixture
- Start by making a panade (a soaked bread paste) to keep the meatballs moist and tender. Trim the crusts from sliced white bread, tear the bread into small pieces, and place them in a bowl. Add a little milk to moisten, let it sit for a few minutes to absorb, and then mash the bread with a fork until you have a smooth paste.
- Stir in grated Pecorino Romano (I like Locatelli), grated yellow onion, a lightly beaten egg, chopped parsley, salt, and pepper until fully combined.
Tip: Use the large holes of a sharp box grater to grate the onion—just watch your knuckles! The grated pulp will be moist, but if it releases too much liquid, strain off the excess to keep the meatball mixture from becoming too loose.
- Add ground beef (85% lean/15% fat, often labeled “ground round”) and ground pork, mixing gently with a fork or your hands until just combined. Over-mixing can make the meatballs dense.
- Before shaping, cook a small spoonful of the mixture in a skillet to check the seasoning. Adjust with more cheese, salt, or pepper if needed. Since the meatballs will simmer in broth, they should be well-seasoned.
Step 2: Shape and Fry the Meatballs
- Shape the meat mixture into small meatballs, about 1/2- to 3/4-inch in diameter—you should get around 58 to 60 meatballs.
- To prevent sticking, lightly dampen your hands with cold water before rolling. I shape them by eye, but for uniform size, you can use a small cookie scoop. A half-tablespoon of the mixture makes the perfect-sized meatball for this soup.
- Brown the meatballs in batches in your soup pot with regular olive oil, leaving space between them to prevent steaming. In my 6.75-quart Le Creuset Round Wide Dutch Oven shown here, I can brown them in two batches.
Note: You won’t be cooking the meatballs through at this point (so don’t sneak a taste!)—they’ll finish simmering in the broth.
Step 3: Simmer the Soup
Once the meatballs are browned, remove them from the pot and discard all but 2 tablespoons of fat—this keeps the broth from becoming greasy.
Add diced onions, carrots, and celery, then season with a little salt and pepper. Cook over medium-high heat for 5 to 8 minutes, just until the vegetables begin to soften.
Pour in chicken broth or stock, and use a wooden spoon to scrape up the browned bits from the bottom of the pot—those bits, known as the “fond,” are packed with flavor. For better control over the soup’s salt level, use a moderate- or low-sodium broth, and season to taste after simmering.
Return the browned meatballs to the pot with a Parmigiano Reggiano rind, then bring the broth to a boil. As the soup simmers, the flavors from the meatballs and cheese rind will infuse into the broth and pasta.
- Once boiling, stir in the Acini di Pepe pasta.
- Partially cover the pot, reduce the heat, and let it simmer.
- Cooking times can vary by pasta brand, so start checking for doneness after 10 minutes. If you like softer pasta in soup (as my family does), let it cook for closer to 15 minutes.
Tip: Adding the rind from a wedge of parmesan is a simple trick for infusing flavor into soups, stews, and sauces. I always save the rinds when I buy Parmesan for grating, storing them in the freezer for later. Many grocery stores also sell packaged rinds at their gourmet cheese counters.
Step 4: Finish the Soup with Greens
About 5 minutes before the pasta is finished cooking, remove the cheese rind and add escarole, a lightly bitter leafy green from the chicory family.
Roughly chop the escarole leaves and clean them well before adding them to the soup. I like to soak my escarole in a colander set in a bowl of cold water, rinsing thoroughly after any grit has settled in the bottom of the bowl.
Continue simmering the soup until the greens are wilted and tender, and then skim the top of the soup with a spoon to remove any excess fat that’s collected. The amount you’ll have to skim will depend on how much fat the meatballs released.
Variations and Substitutions
Use Ground Chicken or Turkey
For the best flavor and texture, avoid using only ground breast meat. Extra-lean poultry can result in dry, less tender meatballs.
- Ground Turkey: Typically available in 85% lean/15% fat and 93% lean/7% fat varieties. For juicier meatballs, use all 85%/15% or a mix of the two.
- Ground Chicken: Look for packages labeled “lean” or simply “ground chicken” (usually 96% lean/4% fat, made from a mix of breast and thigh meat). “Extra lean” ground chicken (98% lean/2% fat) is often labeled “ground chicken breast” and may yield drier meatballs.
Swap the Pasta
Instead of Acini di Pepe, try other small pasta shapes like ditalini or orzo. Adjust the cooking time for different types of pasta as needed.
Use Different Greens
- Spinach: For a milder, less bitter flavor than escarole. Add your spinach leaves to the soup coarsely chopped. I find that spinach wilts down a bit faster than escarole.
- Curly Endive: Some families prefer endive in Italian Wedding Soup for its stronger, slightly bitter flavor. While it isn’t my preference, you may enjoy the substitution if you love bitter greens. Since its texture is a bit tougher, curly endive will take longer than escarole to cook, so allow about 10 minutes of cooking time.
Serving and Storing Italian Wedding Soup
We like to serve the soup with a few grinds of pepper and grated Parmigiano-Reggiano on top. In my house, warm, crusty Italian bread is a must for dipping into the flavorful broth.
Store the soup in an airtight container in the refrigerator for up to 3 days. Keep in mind that the pasta will continue to soften and soak up some of the broth as it sits. If reheating the soup after a day or two, you might need to add additional broth to the pot.
Tip: If you don’t love the texture of next-day, very soft pasta, you can cook the pasta separately, store it without liquid, and add it to the reheated soup when serving.
Omit the pasta when you initially make the soup, and instead cook it in a second pot of broth until al dente (or your desired doneness). Drain the pasta, lightly toss it with a teaspoon or two of olive oil, and store it in an airtight container in the refrigerator.
More Soup Recipes
Craving more? Browse my full collection of Soup Recipes!
Italian Wedding Soup
Ingredients
Meatballs
- 1 to 1-1/2 slices white bread , crusts removed and discarded and bread torn into small pieces (about 3/4 cup bread pieces)*
- 2 tablespoons milk (whole or 2%)
- 1 small yellow onion , grated on a box grater (about 1/3 cup)**
- 1 large egg , lightly beaten
- 1/2 cup grated Pecorino Romano cheese
- 1/3 cup chopped fresh Italian (flat-leaf) parsley
- 1 teaspoon kosher salt
- pinch freshly-ground black pepper
- 1/2 pound ground beef (85%/15%)
- 1/2 pound ground pork
Soup
- 2 tablespoons olive oil (not extra virgin)
- 1 cup diced yellow onion (1/4 inch dice)
- 1 cup diced carrot (1/4 inch dice)
- 3/4 cup diced celery (1/4 inch dice)
- 12 cups chicken broth or stock ***
- 1 medium rind from a block of Parmigiano Reggiano
- 3/4 cup dried acini di pepe pasta
- 1 head escarole (about a pound), washed well and roughly chopped
- kosher salt and freshly-ground black pepper
Instructions
Make the Meatballs
- In a large bowl, make a panade by combining the bread pieces and milk, letting it stand for 5 minutes to absorb. Mash the mixture with a fork until it forms a fairly smooth paste.
- Stir in grated onion, egg, Pecorino Romano, parsley, salt, and a pinch of black pepper until well combined.
- Add beef and pork and mix until just combined (for tender meatballs, don’t over-mix). Cook a teaspoonful of the mixture in a skillet on the stove to test for seasonings and, if needed, add additional salt, cheese, and/or pepper to taste. (The meatballs should be well-seasoned for the best flavored soup.)
- Portion the meatball mixture into 1-1/2 teaspoon portions (about 3/4 inch diameter). To more cleanly shape the meatballs, dampen your hands with a bit of water before rolling. Set the meatballs aside.
Make the Soup
- Heat olive oil in a large, heavy bottomed pot or Dutch oven over medium high heat until shimmering.
- Add half of the meatballs and lightly brown, 2-3 minutes per side. Remove from the pan to a plate and repeat with the remaining meatballs. (Note that the meatballs will not be cooked through and will finish cooking in the soup.)
- Drain off all but 2 tablespoons of fat from the pan. Add carrot, onion, and celery with a pinch each of kosher salt and black pepper. Cook, stirring frequently, until vegetables are beginning to soften, 5-8 minutes.
- Pour chicken broth or stock into the pot, scraping up any brown bits on the bottom of the pan. Add meatballs back into the pot with any accumulated juices, and the Parmigiano Reggiano rind.
- Bring the soup to a boil and stir in the acini di pepe. Reduce heat, partially cover the pot, and simmer for 10-15 minutes, until the pasta is tender.
- Remove the cheese rind from the pot and discard. Add the escarole and simmer, uncovered, until wilted and tender, about 5 minutes. Skim excess fat from the top of the soup with a spoon (the amount released will depend on the meat you used).
- If needed, season the soup with salt and pepper to taste. Top with additional grated parmesan, if desired, and serve hot with slices of crusty Italian bread for dipping.
Notes
Nutrition Estimate
Nutrition information is automatically calculated, so should only be used as an approximation.
About our recipes
Please note that our recipes have been developed using the US Customary measurement system and have not been tested for high altitude/elevation cooking and baking.
Editor’s note: This recipe was originally published on Striped Spatula in January 2023. We have updated the blog post with improved copy for a better reader experience.