Homemade Italian Wedding Soup with Parmesan Meatballs and Orzo
The onion, carrot, and celery soften in the pot before the broth ever starts to bubble. That gentle start gives the vegetables time to turn tender without losing their shape,…
Tip: save now, cook later.The onion, carrot, and celery soften in the pot before the broth ever starts to bubble. That gentle start gives the vegetables time to turn tender without losing their shape, which matters in a soup where every spoonful should have a little of everything. I make this homemade Italian wedding soup when I want a full, comforting bowl without juggling several pots.
The orzo cooks right in the seasoned broth, so there’s no separate pasta pot and no draining away flavor. The meatballs bake first, then join the soup while the orzo softens. Spinach goes in at the end, just long enough to wilt. You get a savory broth, tender pasta, and Parmesan meatballs that hold together in every spoonful.

Kitchen Note
Use a light touch when you roll the meatballs. They don’t need to be perfectly smooth; packing the mixture tightly makes these small meatballs dense instead of tender.
Save this homemade Italian wedding soup for a night when Parmesan meatballs, tender orzo, and a pot of savory broth sound just right.
Why the Meatballs Bake Before They Ever Touch the Broth
It might seem easier to drop the raw meatballs straight into the soup, but baking them first gives you a browned exterior and a clear doneness check before they meet the broth. Raw meatballs simmering in the pot would also make the pasta timing harder to manage: the meat needs to cook through, while orzo can turn soft if it stays in hot liquid too long.
Baking separates those jobs. The meatballs finish in the oven, and the soup can simmer its vegetables and broth without raw meat cooking in it. When the cooked meatballs go back into the pot with the orzo, they warm through as the pasta cooks. That keeps the final simmer focused on getting the orzo tender, rather than asking it to wait for the meatballs.
It’s a small change in order, but it gives the soup a cleaner, more controlled finish. You can watch the orzo and stop the cooking as soon as it’s tender, without leaving the pasta in the pot while you wonder whether the centers of the meatballs are done.
What Gives the Meatballs Their Savory Balance

- Ground beef and pork — The beef brings a familiar, savory taste while pork adds richness to the small meatballs. The specified 85% lean beef has enough fat to keep them from tasting dry without making the mixture overly greasy.
- Plain breadcrumbs and egg — These hold the meat mixture together and help keep the meatballs tender. Plain breadcrumbs are a better fit than seasoned ones here, since extra herbs and salt can shift the seasoning you’ve built into the soup.
- Parmesan, parsley, and garlic — Finely grated Parmesan disperses through the meat mixture instead of forming large pockets, and fresh parsley and minced garlic bring flavor to the center of each meatball. A finely grated wedge of Parmesan has a fresh, sharp taste; packaged finely grated Parmesan is a convenient choice that still works.
- Onion, carrots, celery, and low-sodium broth — These make the soup’s savory base. Evenly diced vegetables soften at about the same pace, and low-sodium broth leaves room for the measured salt and pepper to season the pot without making the broth taste heavy with salt.
- Orzo and baby spinach — Orzo is small enough to fit naturally alongside the meatballs on a spoon, while baby spinach wilts quickly and keeps its tender texture when added near the end. Fresh baby spinach is the right choice for the brief cooking time in this soup.
From the Oven to Tender Orzo: Building the Soup in Order
Shape and Bake the Parmesan Meatballs
Heat the oven to 400°F and line a rimmed baking sheet with parchment paper. Combine the beef, pork, breadcrumbs, egg, Parmesan, parsley, garlic, salt, and pepper, then shape the mixture into 1-inch meatballs. Arrange them on the baking sheet and bake for 12–15 minutes, until browned and the centers reach 160°F on an instant-read thermometer. Check a meatball near the middle of the pan so you’re reading its center rather than the browned surface.
Soften the Soup Vegetables
Warm the olive oil in a 6-quart pot over medium heat, then add the diced onion, carrots, and celery. Cook for 5–7 minutes, stirring occasionally, until the vegetables have softened. If the onion still looks firm and the carrots feel hard, give them the full cooking window before adding the broth.
Simmer the Seasoned Broth
Pour in the chicken broth and add the Italian seasoning, salt, and pepper. Bring the pot to a boil, then reduce the heat and simmer for 10 minutes. This gives the vegetables time to finish softening in the broth before the pasta goes in.
Cook the Orzo with the Meatballs
Add the baked meatballs and dry orzo to the pot. Simmer for 8–10 minutes, stirring occasionally, until the orzo is tender. Check a piece before moving on; orzo that still feels firm in the center needs more time, while pasta left simmering after it’s tender will continue to soften.
Wilt the Spinach at the Finish
Stir in the baby spinach and cook for 1–2 minutes, until the leaves have wilted. The spinach doesn’t need a long simmer, so take the pot off the heat once the leaves have collapsed into the soup. The finished bowl should still show flecks of green among the meatballs and orzo.
Two Practical Ways to Adapt the Meatballs and Pasta
Make the Soup Gluten-Free
Use gluten-free plain breadcrumbs and gluten-free orzo in the same measured amounts, and choose chicken broth and Italian seasoning made without gluten. Gluten-free pasta brands can soften at different rates, so cook it until tender rather than relying on the original orzo timing. The meatballs may have a slightly different crumb, but the soup keeps its familiar format.
Use All Beef for a More Beef-Forward Bowl
Replace the ground pork with the same weight of 85% lean ground beef. The meatballs will taste more distinctly beefy and lose some of the pork’s richness, but you can mix, shape, and bake them using the same method.
Storage and Reheating
- Refrigerator: Store in a covered container for 3–4 days. The orzo will absorb broth as it sits, so the soup will be thicker the next day.
- Freezer: Freeze in airtight containers for up to 2 months for best quality. The soup freezes safely, though the orzo will be softer after thawing.
- Reheating: Warm on the stovetop over medium heat, stirring occasionally, until the soup reaches 165°F. Stir in a little low-sodium chicken broth if it has thickened; a hard, prolonged boil can make the orzo mushy.
Questions That Come Up While the Soup Simmer

Homemade Italian Wedding Soup with Parmesan Meatballs and Orzo
Ingredients
Equipment
Method
- Heat the oven to 400°F.
- Line a rimmed baking sheet with parchment paper.
- Gently mix the ground beef, ground pork, breadcrumbs, egg, Parmesan, parsley, garlic, salt, and pepper in a medium bowl.
- Shape the mixture into 1-inch meatballs and arrange them on the baking sheet.
- Bake for 12–15 minutes, until the meatballs are browned and the centers reach 160°F on an instant-read thermometer.
- Heat the olive oil in a 6-quart pot over medium heat, add the onion, carrots, and celery, and cook for 5–7 minutes, stirring occasionally, until softened.
- Add the chicken broth, Italian seasoning, salt, and pepper; bring to a boil, then reduce the heat and simmer for 10 minutes.
- Add the meatballs and orzo and simmer for 8–10 minutes, stirring occasionally, until the orzo is tender.
- Stir in the spinach and cook for 1–2 minutes, until wilted.