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.

Italian Wedding Soup in a white handled bowl on an ivory ceramic plate with two spoons and slices of Italian bread
Want to save this recipe?
Send the link to your Inbox, plus receive our new and trusted recipes weekly!

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!

overhead photo of the ingredients needed to make meatballs for Italian Wedding Soup on a wood background with text label overlays
overhead photo of diced carrots, celery, and onions in white bowls, a parmesan cheese rind, a liquid measuring cup filled with chicken broth, and a head of escarole, with text label overlays

Step 1: Make the Meatball Mixture

  1. 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.
  2. Stir in grated Pecorino Romano (I like Locatelli), grated yellow onion, a lightly beaten egg, chopped parsley, salt, and pepper until fully combined.
milk soaked white bread in a glass bowl being mashed with a black fork
Mashing the bread and milk to make a paste.
overhead photo of beaten egg, pecorino romano cheese, and chopped parsley in a glass bowl on a wood board
Mixing in the pecorino, egg, and seasonings.

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.

  1. 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.
  2. 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.
ground beef and pork in a glass bowl with a seasoned panade on a wood board
Adding the ground beef and pork.
uncooked meatball mixture in a glass bowl on a wood board
Gently mixed and ready to shape.

Step 2: Shape and Fry the Meatballs

  1. Shape the meat mixture into small meatballs, about 1/2- to 3/4-inch in diameter—you should get around 58 to 60 meatballs.
  2. 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.
overhead photo of an open hand holding a small beef and pork meatball over a bowl of the unrolled meatball mixture
Rolling the meatballs.
closeup view of small beef and pork meatballs on a parchment lined baking sheet
Shaped and ready to fry.
  1. 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.

removing a seared beef and pork meatball from a pot with a pair of red tongs
Browning the meatballs.

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.

sautéed celery, carrots, and onions in an enameled cast iron Dutch oven with a wooden spoon
Sweating the vegetables.
pouring chicken stock from a glass liquid measuring cup into a red enameled cast iron dutch oven with sauteed carrots, celery, and onions
Pouring in the chicken stock.

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.

  1. Once boiling, stir in the Acini di Pepe pasta.
  2. Partially cover the pot, reduce the heat, and let it simmer.
  3. 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.

acini di pepe pasta being poured into a pot of Italian Wedding Soup from a white ceramic bowl
Adding the pasta.

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.

chopped escarole being stirred into a pot of Italian Wedding Soup with a wooden spoon
Adding the escarole.

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.
ladleful of Italian Wedding Soup in an enameled cast iron pot

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.

overhead photo of two bowls of Italian Wedding Soup on a wood background with a sliced loaf of Italian bread in the upper right corner

Craving more? Browse my full collection of Soup Recipes!

Italian Wedding Soup

My family's hearty Italian Wedding Soup is filled with flavorful beef and pork meatballs, tiny pasta pearls, aromatic vegetables, and greens. This is a cozy, one pot recipe that feels like a warm hug on a cold night.
Prep Time: 50 minutes
Cook Time: 1 hour
Total Time: 1 hour 50 minutes
Servings: 8 servings

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
Save this recipe!
Send the link to your inbox, plus get new recipes from us weekly!

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

*We usually use Maier’s Italian-Style white bread from the grocery store in our meatballs, which is soft and not too dense. Any similarly soft white bread will work to make the panade.
**The grated onion will be juicy, but if it throws a copious amount of liquid (which can happen if the box grater is dull), drain some of it off so the meatball mixture isn’t too moist to hold its shape when rolled.
***I typically use homemade chicken broth, or a high-quality regular variety from the grocery store. If you prefer to limit the salt content in the soup, choose low sodium broth or stock and season the soup to taste.

Nutrition Estimate

Serving: 0.125recipe | Calories: 183kcal | Carbohydrates: 23g | Protein: 8g | Fat: 7g | Saturated Fat: 2g | Polyunsaturated Fat: 1g | Monounsaturated Fat: 4g | Trans Fat: 1g | Cholesterol: 30mg | Sodium: 1723mg | Potassium: 615mg | Fiber: 4g | Sugar: 3g | Vitamin A: 4218IU | Vitamin C: 35mg | Calcium: 156mg | Iron: 2mg

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.

Like this? Rate and comment below!

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.

Share this recipe:

cropped-bolognese-sauce-instant-pot-1.jpg
5 Restaurant-Quality Dinners in Under an Hour
Join our newsletter list and start your subscription with our Quick Start Series! You'll be introduced to 5 of our most popular, easy-to-prep, gourmet recipes to make weeknight dinners and entertaining a breeze.

You may also like:

Leave a comment

Your email address will not be published. Required fields are marked *

Recipe Rating