Italian Wedding Soup
Italian wedding soup, minestra maritata, is a brothy, comforting bowl from southern Italy by way of Italian-American kitchens: delicate chicken meatballs, sweet soffritto vegetables, tiny pasta and a handful of greens in a clear chicken broth. The name has nothing to do with weddings; it describes the marriage of meat and vegetables in one pot. This version poaches the meatballs right in the broth so they stay tender, then finishes with acini di pepe and spinach. Budget about 25 minutes of prep and 30 minutes of cooking, and let the pot do most of the work.
- Prep
- 25 min
- Cook
- 30 min
- Total
- 55 min
- Serves
- 6
Ingredients
What you’ll need — tap to tick off as you go
- 450 g
- 50 g
- 30 g
- 2 cloves
- 2 tbsp
- ½ tsp
- ¼ tsp
- 1 tbsp
- 1 ½ l
- 100 g
- 150 g
Process
Timers built in · swap anything · ask as you cook
In a large bowl, combine the 450 g ground chicken, 50 g plain breadcrumbs, 1 egg, 30 g finely grated Parmesan, 2 minced garlic cloves, 2 tbsp chopped parsley, 0.5 tsp salt and 0.25 tsp black pepper. Mix with a light hand just until no dry breadcrumb patches remain; overworking develops sticky proteins and gives you dense, bouncy meatballs.
Roll the mixture into small meatballs about 2 cm across, a generous teaspoon each, roughly 30 in total. Work quickly with lightly moistened hands and a few gentle rolls per ball; compacting the meat makes them tough. Keep them on a plate while you finish.
Heat the 1 tbsp olive oil in a large pot over medium heat. Add the diced carrot, celery and onion and cook, stirring occasionally, until the onion turns translucent and the vegetables soften at the edges, about 5 minutes. Keep them pale: a light sweat, not a browning, gives the broth a cleaner, sweeter base.
Pour in the 1.5 l low-sodium chicken broth and bring it to a bare simmer, small bubbles at the edge, not a rolling boil. Slide the meatballs in one at a time and simmer uncovered for 10 minutes without stirring. They are done when they float, feel firm, and reach 74°C in the center, the USDA minimum for ground poultry. Skim the grey foam so the broth stays clear.
Stir in the 100 g acini di pepe and simmer for 8–10 minutes, until the pasta is al dente: tender with a small firm bite at the centre. Stir in the 150 g spinach and cook 2 minutes more, just until it collapses and turns deep green. Taste and adjust with salt and pepper.
Ladle into warm bowls, making sure each serving gets meatballs, pasta and greens. Serve hot with the extra grated Parmesan scattered on top. If the pot will stand before seconds, keep a little hot broth back to loosen it, because the tiny pasta keeps drinking liquid as it sits.

Why this recipe works
The method is built around poaching, not browning. Dropping the raw meatballs into a bare simmer sets them gradually: the proteins firm up before the meat can shed its moisture, and the gentler the bubbles, the less the meatballs knock against each other and break apart. Because ground chicken is lean and mild, the breadcrumbs, egg and Parmesan do double duty as binder and seasoning, and mixing stops the moment the mixture holds, since overworked meat sets into a springy, bouncy texture. Sautéing the soffritto first builds a sweet base, and simmering the pasta straight in the broth releases starch that gives the soup a little body.
Equipment
- Large soup pot or Dutch oven, 4-5 l
- Large mixing bowl
- Chef's knife and cutting board
- Measuring spoons
- Wooden spoon and a ladle
- Instant-read thermometer
- Fine grater for the Parmesan
Kitchen notes
Kitchen notes
- Grate the Parmesan on the finest setting you have so it melts into the mixture rather than reading as shreds, and if you buy it as a wedge, simmer the rind in the broth like a savoury stock cube; fish it out before serving.
- Keep the rolled meatballs cold while the broth comes up to a simmer, a few minutes in the fridge or a cool spot, so the fat stays firm and the balls hold their shape in the pot.
- Control the simmer, not the clock: if the surface is churning, lift the pot half off the heat or lower the flame. A lazy, trembly simmer is what keeps the meatballs whole and the broth clear.
- Warm the serving bowls with hot water while the pasta cooks; this soup is not rich, so it cools quickly in cold bowls.
- The pot holds at a bare simmer for about ten minutes if guests are late, but add the spinach only when you are ready to serve, or it turns olive-drab.
Common mistakes
- Meatballs that break up in the pot: the mixture was too warm or too loose, or they hit a rolling boil. Keep the mix and your hands cool, roll gently, and hold the broth at a bare simmer; a hard boil batters soft meatballs apart before they set.
- Dense, bouncy meatballs: the mixture was overworked or packed too tightly. Mix only until the ingredients just hold, roll each ball with a few light passes, and stop as soon as it is round.
- Cloudy, starchy broth: a hard boil plus foam left in the pot, and pasta cooked long enough to shed starch. Skim the grey foam after the meatballs go in, keep the simmer low, and pull the pasta at al dente.
- Spinach that turns dark and slimy: it stayed in the pot too long while the pasta finished. Stir it in only once the pasta is already al dente, cook it for two minutes, and serve straight away.
- A flat-tasting pot: tasting too early, before the meatballs and Parmesan have seasoned the broth, or under-seasoning at the end. Wait until the pasta is al dente, then correct with salt and pepper and finish with grated Parmesan.
Serving suggestions
- Ladle it hot and top each portion with grated Parmesan at the table so it melts into the surface.
- Crusty bread or focaccia on the side to mop the broth; a sharp green salad cuts through it if the soup is the main course.
- About 250 ml works as a first course before a roast; as a main, serve a full ladle and a half per person with bread.
- To drink, sparkling water with a slice of lemon or a glass of iced tea keeps the broth tasting clean.
Variations
- Escarole version: swap the spinach for 150 g chopped escarole, the traditional green. Wash it well of grit and give it 5-8 minutes in the broth; the soup gains a gentle, pleasant bitterness.
- Browned-meatball version: sear the meatballs in the oil before the vegetables, set them aside, then build the soup and return them for the final simmer; the broth turns darker and deeper, while the poached method stays lighter.
- Clear-broth version: cook the 100 g pasta separately in salted water and add it to the bowls, ladling the soup over; the broth stays clean and thin instead of thickening with starch.
Refrigerator
- RefrigeratorCool the soup within 2 hours of cooking, then refrigerate in a sealed container for up to 3 days. The pasta keeps swelling, so store the pot with a little extra broth and expect a thicker bowl each day.
- ReheatingGently on the stovetop, loosening with broth or water, until it simmers again; leftovers should reach 74°C, the USDA reheat guidance. If the pasta has gone soft, add fresh cooked pasta instead of reheating it again.
- FreezingThe broth and meatballs freeze well, up to 2-3 months, the USDA window for soups; the pasta does not, because it turns soft and drinks the broth on thawing. Freeze without pasta and cook the pasta fresh when you reheat.
- Make aheadRoll the meatballs a day ahead and refrigerate them raw (ground poultry keeps 1-2 days), or poach them in the broth the day before. The full soup can be cooked 1-2 days ahead; keep it a little brothy and add the spinach only when reheating.
Updated:
How this recipe was developed
- USDA FSIS Safe Minimum Internal Temperature Chart (ground poultry 74°C; leftovers reheated to 74°C)
- FoodSafety.gov Cold Food Storage Chart (soups and stews: 3-4 days refrigerated, 2-3 months frozen; raw ground poultry 1-2 days)
- Serious Eats, Daniel Gritzer, Italian-American Wedding Soup (mini meatballs dropped into a simmering broth; pasta cooked separately so it does not drink the broth)
- NYT Cooking, Lidey Heuck, Italian Wedding Soup (acini di pepe simmers about 10 minutes; the pasta keeps absorbing liquid as the soup sits)
Editorial references are kept internally for verification. This page makes no claim of external certification or professional testing.
FAQ
The questions we get asked most
Why did my meatballs fall apart in the soup?
Usually a warm or loose mixture, or too hard a boil. Keep the mix cold, roll gently, slide the meatballs into a bare simmer, and leave them unstirred for the first two minutes so the proteins set before the soup is stirred again. If the mixture feels very soft, work in another spoonful of breadcrumbs.
How do I know when the chicken meatballs are cooked through?
They float, feel firm to the touch and read 74°C in the center on an instant-read thermometer, the USDA minimum for ground poultry. Cutting one open is a weaker check: ground chicken can stay faintly pink even when it is safe, so trust the thermometer.
Why did my broth turn cloudy?
A rolling boil and the foam released by the meatballs. Keep the pot at a bare simmer, skim the grey foam as it rises, and do not stir hard; for the clearest broth, cook the pasta separately and add it at the table.
Can I make this soup ahead of time?
Yes, and the base is better made a day ahead. Cook it 1-2 days ahead and refrigerate, or roll the meatballs the day before (raw ground poultry keeps 1-2 days). Keep the pot a little brothy and hold the spinach until you reheat.
Can I freeze Italian wedding soup?
The broth and meatballs freeze well for up to 2-3 months; the cooked pasta does not. Freeze the soup without it, thaw overnight in the fridge, and simmer fresh acini di pepe, or another tiny pasta, in the reheated pot.
What can I use instead of acini di pepe?
Orzo, ditalini, small shells or stelline, measured at the same 100 g. Cooking times differ, so start checking the bigger shapes at 7 minutes and pull them when they are al dente.
Why does my soup get thicker every day?
Acini di pepe keeps absorbing broth after cooking. Store the soup with extra broth, loosen it when reheating, or cook the pasta separately for the portions you plan to keep.
Ask KitchenMind about this recipe
Tell it what’s different tonight — it works within the actual recipe.


