Italian wedding soup has nothing to do with weddings. The name comes from minestra maritata, or married soup, because the greens and the meat go so well together. Small, tender meatballs, tiny pasta, leafy greens and a rich chicken broth make it one of the most comforting bowls of the season.
This recipe makes the meatballs from scratch with a mix of beef and pork, a soaked bread panade for tenderness, parmesan and a little lemon zest. They are baked briefly to hold their shape, then finish cooking in the broth.
The whole pot takes about an hour, most of it hands off, and it feeds six with leftovers that reheat well. Serve it with crusty bread and a heavy hand of grated parmesan.
Why this recipe works
- A panade of bread and milk keeps the meatballs tender even after simmering in broth.
- Half beef and half pork gives the meatballs richness and a softer texture than all beef.
- Baking the meatballs for 10 minutes sets their shape so they do not fall apart in the pot.
- Simmering them in the broth after baking flavors the soup and keeps them juicy.
- Acini di pepe cooks in the soup and stays small enough to eat with the meatballs in one spoonful.
- A parmesan rind simmered in the broth and a squeeze of lemon at the end add depth and brightness.
Ingredients you’ll need
Ground beef and ground pork. Half a pound of each. The pork adds fat and tenderness. All beef works but the meatballs will be a little firmer.

Panade. Two slices of white sandwich bread with the crusts removed, torn and soaked in 1/4 cup of milk. This is what keeps the meatballs soft.
Parmesan, egg and seasonings. Half a cup of finely grated parmesan, one egg, two cloves of garlic, chopped parsley, a little lemon zest, salt and pepper.
Aromatics for the broth. One onion, two carrots, two celery stalks and two more cloves of garlic, all finely diced so they nearly melt into the soup.
Chicken broth. Eight cups of good low sodium chicken broth. The broth is the soup, so use one you would happily drink on its own.
Small pasta. Three quarters of a cup of acini di pepe, orzo or other tiny pasta.
Greens. Five ounces of baby spinach or one bunch of escarole, chopped. Escarole is traditional. Spinach is easier to find.
Ingredient notes and smart substitutions
Ground meat
Ground turkey or chicken can replace the beef and pork. Use 1 pound of dark meat ground turkey and add 1 extra tablespoon of olive oil to the mixture since poultry is leaner. Cook poultry meatballs to 165°F rather than 160°F. Hot or sweet Italian sausage removed from its casings makes excellent meatballs and needs less seasoning.
Panade
Use 1/3 cup of plain panko or dry breadcrumbs soaked in the same 1/4 cup of milk. For gluten free meatballs, use gluten free breadcrumbs or 3 tablespoons of almond flour.
Pasta
Orzo, ditalini, stelline or broken angel hair all work in the same amount. Cooking time varies from 7 to 10 minutes. For gluten free, use small gluten free pasta or 3/4 cup of cooked rice added at the end.
Greens
Escarole is the classic and holds up best to reheating. Kale with the ribs removed and chopped small needs about 10 minutes of simmering. Swiss chard works too. Frozen chopped spinach, thawed and squeezed dry, is fine in a pinch.
Broth
Homemade chicken stock makes this soup extraordinary. Store bought low sodium broth is the everyday choice. Bone broth adds body. Vegetable broth changes the character but still works with turkey meatballs.
Parmesan
Pecorino Romano is sharper and saltier, so cut the salt in the meatballs by 1/4 teaspoon. Grate from a block for both the meatballs and the topping since pre grated cheese does not bind as well.
How to make it
1. Make the panade
Tear the bread into small pieces in a large bowl, pour the milk over it and let it sit for 5 minutes. Mash it into a paste with a fork. This soft paste is what separates tender meatballs from rubbery ones.
2. Mix and shape the meatballs
Add the beef, pork, parmesan, egg, garlic, parsley, lemon zest, 3/4 teaspoon of salt and 1/4 teaspoon of pepper to the panade. Mix gently with your hands just until combined. Overmixing makes them tough. Shape into 1 inch meatballs, about 40 total. A small cookie scoop keeps them even. Wet hands prevent sticking.
3. Bake the meatballs
Arrange the meatballs on a parchment lined sheet pan and bake at 400°F for 10 to 12 minutes. They should be lightly browned and set but not fully cooked through. They will finish in the soup. Baking rather than pan frying means no splatter and no batches.

4. Build the broth
While the meatballs bake, heat 2 tablespoons of olive oil in a large pot over medium heat. Add the onion, carrot and celery with a pinch of salt and cook for 8 minutes until softened. Add the garlic and cook 1 minute. Pour in the broth, add the parmesan rind if you have one, and bring to a simmer.
5. Simmer the meatballs and pasta
Add the baked meatballs to the simmering broth. Cook for 10 minutes, then add the pasta and cook another 8 to 10 minutes until the pasta is tender and the meatballs register 160°F in the center. Keep the soup at a gentle simmer, not a rolling boil, so the meatballs stay intact.
6. Finish with greens and lemon
Remove the parmesan rind. Stir in the spinach or escarole and cook 2 to 3 minutes until wilted. Add a squeeze of lemon juice and taste for salt and pepper. Serve with a generous shower of grated parmesan.

Common mistakes and how to fix them
The meatballs fell apart. They were added raw to a boiling pot, or the mix had too little binder. Bake them first and keep the soup at a gentle simmer. If they have already crumbled, the soup still tastes great as a rustic meat and pasta soup.
The meatballs are tough. The mixture was overworked or the panade was skipped. Mix with a light hand and stop as soon as the ingredients are combined.
The pasta soaked up all the broth. Pasta keeps absorbing liquid as it sits. For leftovers, cook the pasta separately and add it to each bowl. Add extra broth when reheating.

The soup tastes bland. Season the broth, not just the meatballs. Add salt in 1/2 teaspoon increments, then a squeeze of lemon. A parmesan rind or a spoonful of grated parmesan stirred into the pot also adds depth.
The greens turned slimy. Spinach was added too early. It only needs 2 minutes. Escarole and kale can handle 10.
Timing and make ahead plan
Shape the meatballs up to 1 day ahead and refrigerate them on the sheet pan, covered. Or bake them ahead and store them in the fridge for 3 days or the freezer for 3 months. Frozen baked meatballs can go straight into the simmering broth. Add 5 minutes.
Dice the onion, carrot and celery up to 2 days ahead. With everything prepped, the soup takes 30 minutes.
The broth with vegetables and meatballs can be made 3 days ahead. Cook the pasta and add the greens when you reheat it so both stay fresh.
For a party, keep the soup on low, cook the pasta separately and let guests add pasta and parmesan to their own bowls. Nothing gets mushy.
Tips for the best Italian wedding soup
Keep the meatballs small, about 1 inch. They should fit on a spoon with pasta and greens. Bigger meatballs feel like a different dish.
Use a small cookie scoop. Forty meatballs shaped by hand takes a while. A scoop cuts it to 5 minutes and keeps them uniform so they cook evenly.
Do not skip the parmesan rind. Save rinds in the freezer for exactly this purpose. They add a savory depth that grated cheese alone cannot.
Dice the vegetables small, about 1/4 inch. They should nearly disappear into the broth rather than compete with the meatballs.
Finish with lemon. A teaspoon or two of fresh juice at the end lifts the whole pot without tasting like lemon.
Salt the broth in stages. Taste after the meatballs have simmered, since they release seasoning into the liquid, and again after the pasta, which absorbs some of it.
Variations
Chicken meatball wedding soup. Use 1 pound of ground chicken with an extra tablespoon of olive oil in the mix and cook the meatballs to 165°F.
Sausage wedding soup. Use 1 pound of mild Italian sausage removed from the casings in place of the beef and pork. Cut the salt in half.
White bean wedding soup. Add a drained 15 ounce can of cannellini beans with the pasta for a heartier bowl, borrowing from our Tuscan white bean soup with kale.
Egg drop finish. Whisk 2 eggs with 2 tablespoons of grated parmesan and drizzle slowly into the simmering soup while stirring. The eggs set into delicate ribbons, a traditional touch.
Slow cooker version. Bake the meatballs, then add them to a slow cooker with the sauteed vegetables and broth. Cook on LOW for 4 hours or HIGH for 2 hours. Add the pasta for the final 30 minutes on HIGH and the greens for the last 5 minutes.
Equipment that makes this easier
A 6 quart pot or Dutch oven. The soup makes about 12 cups and needs room for a gentle simmer without boiling over.
A rimmed sheet pan and parchment paper for baking the meatballs. A small 1 tablespoon cookie scoop for portioning.
An instant read thermometer to confirm the meatballs reach 160°F. A microplane for the parmesan, garlic and lemon zest.
Scaling up or down
To halve the recipe, use 1/2 pound of meat total, one egg yolk instead of a whole egg, and a 4 quart pot. Everything else halves cleanly.
Doubling makes about 80 meatballs and 24 cups of soup. Use two sheet pans for baking and an 8 quart or larger stockpot. Simmer the meatballs in two batches if the pot is crowded so the broth stays at a simmer.
The recipe serves six generously as a main. As a first course it serves eight to ten in smaller bowls. Our Swedish meatballs post has more meatball shaping tips if you are new to it.
What to serve with it
Crusty Italian bread or garlic bread is the natural partner, along with a bowl of grated parmesan for the table.

A simple arugula salad with lemon and olive oil balances the richness. For a full Italian dinner, serve small bowls of soup first and follow with slow cooker chicken cacciatore or a pan of baked ziti.
Roasted broccoli with garlic or a tray of roasted fall vegetables from our fall side dishes roundup rounds out the meal.
How to store, freeze and reheat
Refrigerator. Cool within 2 hours and refrigerate in airtight containers for up to 4 days. The pasta will absorb broth as it sits, so expect a thicker soup and add broth when reheating.
Freezer. The soup freezes best without the pasta and greens. Freeze the broth, vegetables and meatballs for up to 3 months. Add freshly cooked pasta and greens after reheating. Baked meatballs alone freeze beautifully on a sheet pan, then in a bag.
Reheating. Warm over medium heat until the soup is steaming and the meatballs reach 165°F throughout, about 10 minutes from cold. Add broth as needed. In the microwave, heat in 2 minute bursts, stirring between each.
Leftover ideas
Strain out leftover meatballs and pasta, toss them with a little marinara and mozzarella, and bake at 375°F for 15 minutes for a quick meatball bake.
Simmer the leftover broth with a can of white beans and extra greens for a lighter second soup.
Tuck leftover meatballs into a toasted roll with provolone and a spoonful of the soup vegetables for a small meatball sub.
Chop the meatballs and stir them into cooked rice with parmesan and the wilted greens for a quick skillet dinner.
Nutrition notes
A 2 cup serving lands roughly in the 380 to 440 calorie range with 24 to 28 grams of protein, 18 to 22 grams of fat and 26 to 30 grams of carbohydrates. These are estimates and vary with the fat content of your meat, the broth you use and how much parmesan goes on top.
Turkey meatballs cut roughly 60 to 80 calories per serving. Doubling the greens and halving the pasta lowers carbohydrates and adds fiber without changing the character of the soup.
Italian Wedding Soup
Tender baked beef and pork meatballs simmered in a parmesan chicken broth with tiny pasta, vegetables and spinach.
Equipment
- 6 quart pot or Dutch oven
- Rimmed sheet pan
- Small cookie scoop
- Instant read thermometer
Ingredients
Meatballs
- 2 slices white sandwich bread, crusts removed, torn into small pieces
- 1/4 cup whole milk
- 1/2 lb ground beef (85 percent lean)
- 1/2 lb ground pork
- 1/2 cup finely grated parmesan cheese
- 1 large egg
- 2 cloves garlic, minced
- 2 tbsp chopped fresh parsley
- 1/2 tsp finely grated lemon zest
- 3/4 tsp kosher salt
- 1/4 tsp black pepper
Soup
- 2 tbsp olive oil
- 1 medium yellow onion, finely diced
- 2 medium carrots, finely diced
- 2 celery stalks, finely diced
- 2 cloves garlic, minced
- 8 cups low sodium chicken broth
- 1 parmesan rind, optional
- 3/4 cup acini di pepe or orzo
- 5 oz baby spinach or 1 small head escarole, chopped
- 1 to 2 tsp fresh lemon juice
- Kosher salt and black pepper, to taste
- Grated parmesan, for serving
Instructions
- Preheat the oven to 400°F and line a rimmed sheet pan with parchment. In a large bowl, soak the torn bread in the milk for 5 minutes, then mash into a paste with a fork.
- Add the beef, pork, parmesan, egg, garlic, parsley, lemon zest, salt and pepper to the panade. Mix gently with your hands just until combined. Shape into 1 inch meatballs, about 40, using a small cookie scoop and wet hands.
- Arrange the meatballs on the sheet pan and bake for 10 to 12 minutes until lightly browned and set. They will finish cooking in the soup.
- Meanwhile, heat the olive oil in a 6 quart pot over medium heat. Add the onion, carrot, celery and a pinch of salt and cook 8 minutes until softened. Add the garlic and cook 1 minute more.
- Pour in the broth, add the parmesan rind if using, and bring to a simmer. Add the baked meatballs and simmer gently for 10 minutes.
- Add the pasta and cook 8 to 10 minutes until tender and the meatballs register 160°F in the center. Keep the soup at a gentle simmer so the meatballs stay intact.
- Remove the parmesan rind. Stir in the spinach or escarole and cook 2 to 3 minutes until wilted. Add the lemon juice and season with salt and pepper to taste.
- Ladle into bowls and serve with plenty of grated parmesan.
Notes
- Make ahead: Shape and bake the meatballs up to 3 days ahead, or freeze them for 3 months. Add frozen baked meatballs directly to the simmering broth plus 5 minutes.
- Leftovers: Pasta absorbs broth as it sits. For the best texture, cook pasta separately and add to each bowl. Reheat soup to 165°F.
- Poultry meatballs: Use 1 lb ground turkey or chicken with 1 extra tbsp olive oil and cook to 165°F.
- Escarole: Traditional and sturdier than spinach. Add it with the pasta so it has 8 to 10 minutes to soften.
Frequently asked questions
Why is it called Italian wedding soup?
The name is a loose translation of minestra maritata, or married soup, which refers to how well the greens and meat go together. It has nothing to do with actual weddings.
Do I have to bake the meatballs first?
Baking for 10 minutes sets the meatballs so they hold together in the broth. You can drop raw meatballs gently into simmering broth and cook 15 minutes, but they are more likely to break apart and the broth will be cloudier.
What pasta is used in Italian wedding soup?
Acini di pepe is the classic choice. Orzo, ditalini, stelline or broken angel hair all work in the same amount.
Can I freeze Italian wedding soup?
Yes, but freeze it without the pasta and greens, which turn mushy. Freeze the broth, vegetables and meatballs for up to 3 months and add fresh pasta and greens when reheating.
How do I keep the pasta from getting mushy in leftovers?
Cook the pasta separately and store it apart from the soup. Add it to each bowl when serving and reheat the soup to 165°F with a splash of extra broth.





