Italian Wedding Soup Recipe
Despite the name, this has nothing to do with weddings. It’s just tiny meatballs in a rich broth with greens and pasta. The key to a great version is building flavor at every step: browning the meatballs, using a panade to keep them tender, and simmering the broth with a Parmesan rind.


Ingredients
For the Meatballs
- 2 slices sturdy white bread, crusts removed
- 1/4 cup whole milk
- 1/2 pound ground beef
- 1/2 pound ground pork
- 1 large egg, lightly beaten
- 3 cloves garlic, minced
- 1/2 cup freshly grated Parmigiano-Reggiano cheese, plus more for serving
- 1/3 cup fresh parsley, minced
- 1 1/2 teaspoons Diamond Crystal kosher salt
- 1/2 teaspoon freshly ground black pepper
For the Soup
- 2 tablespoons olive oil
- 1 large onion, diced
- 2 carrots, diced
- 2 celery stalks, diced
- 10 cups chicken broth
- 1 Parmesan cheese rind (optional, but recommended)
- 1 cup small pasta (like acini di pepe or orzo)
- 1 head escarole, chopped
- Juice of 1/2 lemon
Make the Meatballs
First, make the panade. Tear the crustless bread into small pieces and place them in a large bowl. Pour the milk over the bread and let it soak for ~5-10 minutes until it’s a soft paste. This panade is what keeps the meatballs tender.
To the bowl with the panade, add the ground beef, ground pork, beaten egg, minced garlic, 1/2 cup of Parmesan, parsley, salt, and pepper. Mix with your hands until just combined. Do not overwork the mixture.
Form the mixture into small, 1-inch meatballs and place them on a baking sheet.
Brown the Meatballs and Build the Soup
In a large Dutch oven or heavy-bottomed pot, heat the olive oil over medium-high heat.
Working in batches, brown the meatballs on all sides, about 4-5 minutes per batch. They do not need to be cooked through. Transfer the browned meatballs to a plate.
Reduce the heat to medium. Add the onion, carrots, and celery to the same pot, scraping up any browned bits from the bottom. Cook for ~5-7 minutes, until the vegetables have softened.
Simmer and Finish
Pour the chicken broth into the pot and add the Parmesan rind. Bring the soup to a boil, then reduce to a simmer.
Stir in the small pasta and cook for about 5 minutes.
Return the browned meatballs to the pot and continue to simmer for another 8-10 minutes, until the pasta is al dente and the meatballs are cooked through.
Stir in the chopped escarole and cook for another 2-3 minutes, just until it has wilted into the soup.
Remove the pot from the heat. Discard the Parmesan rind. Stir in the fresh lemon juice. Taste and adjust seasoning with more salt and pepper if needed.
Ladle into bowls and serve hot, with a generous amount of extra grated Parmesan on top.

Italian Wedding Soup
Ingredients
For the Meatballs
- 2 slices sturdy white bread crusts removed
- 1/4 cup whole milk
- 1/2 pound ground beef
- 1/2 pound ground pork
- 1 large egg lightly beaten
- 3 cloves garlic minced
- 1/2 cup freshly grated Parmigiano-Reggiano cheese plus more for serving
- 1/3 cup fresh parsley minced
- 1 1/2 teaspoons Diamond Crystal kosher salt
- 1/2 teaspoon freshly ground black pepper
For the Soup
- 2 tablespoons olive oil
- 1 large onion diced
- 2 carrots diced
- 2 celery stalks diced
- 10 cups chicken broth
- 1 Parmesan cheese rind optional, but recommended
- 1 cup small pasta like acini di pepe or orzo
- 1 head escarole chopped
- Juice of 1/2 lemon
Method
- Soak bread pieces in milk for 5-10 min until pasty.
- Mix bread mixture with meats, egg, garlic, Parmesan, parsley, salt and pepper until just combined.
- Form into 1-inch meatballs.
- Heat oil in Dutch oven over medium-high heat.
- Brown meatballs in batches 4-5 min; set aside.
- Reduce heat to medium; cook onion, carrots, celery 5-7 min until soft.
- Add broth and Parmesan rind; bring to boil then simmer.
- Add pasta, cook 5 min.
- Return meatballs; simmer 8-10 min until pasta is al dente.
- Add escarole; cook 2-3 min until wilted.
- Remove from heat; discard rind.
- Stir in lemon juice; season to taste.
- Serve hot with extra Parmesan.