This tomato orzo soup brings tender homemade mini meatballs, small pasta, vegetables, and leafy spinach together in a savory broth. The little meatballs cook quickly and fit easily on a spoon, making the soup a satisfying one-pot dinner that’s simple to serve and adapt.
Ingredients
- 1 lb (454 g) ground beef, preferably 85–90% lean
- ⅓ cup (35 g) plain breadcrumbs
- 1 large egg (about 50 g without the shell)
- ¼ cup (25 g) finely grated Parmesan cheese, plus extra for serving
- 2 garlic cloves (about 6 g), finely minced, divided
- 2 tbsp (8 g) finely chopped fresh parsley, divided, plus more to garnish
- ¾ tsp (4 g) dried Italian seasoning
- ¾ tsp (4.5 g) kosher salt, for the meatballs
- ¼ tsp (0.5 g) ground black pepper, for the meatballs
- 1 tbsp (15 ml) olive oil
- 1 medium yellow onion (about 150 g), finely diced
- 1 medium carrot (about 75 g), diced
- 1 celery stalk (about 50 g), diced
- 1 can crushed tomatoes, 14.5 oz (411 g)
- 6 cups (1.42 L) low-sodium chicken broth
- 1 cup (170 g) dry orzo
- 3 cups (90 g) baby spinach
- ½ tsp (3 g) kosher salt, for the soup, plus more to taste
- ¼ tsp (0.5 g) ground black pepper, for the soup
- 1 tbsp (15 ml) fresh lemon juice
Instructions
- Mix and shape the meatballs. In a large bowl, combine the ground beef, breadcrumbs, egg, Parmesan, half of the minced garlic, 1 tablespoon (4 g) of the parsley, Italian seasoning, ¾ teaspoon salt, and ¼ teaspoon pepper. Mix gently with your hands or a fork just until combined; compact, overmixed meatballs can turn firm. Roll the mixture into about 24 small balls, each roughly 1 inch (2.5 cm) across. Set them on a plate while you dice the onion, carrot, and celery and measure the remaining ingredients. Allow about 25 minutes total for this preparation.
- Brown the meatballs. Heat the olive oil in a large, heavy pot or Dutch oven over medium heat. Add the meatballs in a single layer, working in batches if needed so they have room to brown. Cook for about 8 minutes, turning them carefully every couple of minutes. They will not necessarily be cooked through at this stage. Transfer them to a clean plate; leave the browned bits and a thin film of oil in the pot. If the pot looks dry, add a teaspoon of oil.
- Soften the vegetables. Add the onion, carrot, and celery to the pot. Cook for 4 minutes, stirring often, until the onion begins to look translucent and the vegetables start to soften. Stir in the remaining garlic and cook for 1 minute, just until fragrant. Avoid letting the garlic darken, which can make the soup taste bitter.
- Simmer the meatballs in the broth. Pour in the crushed tomatoes and chicken broth, then stir in ½ teaspoon salt and ¼ teaspoon pepper. Scrape the bottom of the pot to loosen the browned bits. Return the meatballs and any juices on the plate to the pot. Bring the liquid to a gentle boil, then lower the heat, cover partly, and simmer for 15 minutes. Check a larger meatball with a food thermometer; USDA FSIS guidance sets the safe minimum internal temperature for ground meat at 160°F (71°C). If needed, continue simmering and check again before moving on.
- Cook the orzo. Stir in the orzo and keep the soup at a gentle simmer, uncovered, for about 9 minutes, or until the pasta is tender but still has a little bite. Stir a few times, especially along the bottom of the pot, because orzo can settle and stick. If the soup boils vigorously, lower the heat so the pasta cooks evenly and the meatballs stay intact.
- Finish and serve. Stir in the spinach and cook for 1–2 minutes, until wilted. Turn off the heat and add the lemon juice. Taste the broth and adjust the salt and pepper. Ladle into bowls and finish with the remaining parsley and extra Parmesan.
Tips
Keep the meatballs tender. Combine the meat mixture only until the breadcrumbs and seasonings are distributed, and use a light touch when rolling. A small cookie scoop can help portion similarly sized balls, but roll each one just enough to make it hold together. Consistent size matters more than perfect roundness: meatballs that are all about an inch across cook at roughly the same rate.
Choose the right pot and heat. A wide, heavy pot gives the meatballs room to brown and helps the vegetables cook without scorching. If you crowd the pan, the meatballs steam instead of developing a browned surface. Browning adds flavor, but the simmer and thermometer check—not the color on the outside—tell you when ground meat is safely cooked.
Adjust salt for your broth. Low-sodium broth leaves room to season at the end, while regular broth can make the soup salty before it reduces. Start with the listed amount, taste after the orzo is tender, and add more a pinch at a time. Parmesan also adds salt, so taste again after garnishing if you plan to stir some into the pot.
Make the soup gluten-free if needed. Use certified gluten-free breadcrumbs and replace the orzo with a small gluten-free pasta, checking its package for cooking time. The pasta may absorb broth at a different rate, so begin checking it a few minutes before the package’s suggested time and add a splash of broth or water if the pot thickens too much.
Serving Suggestions
Serve the soup hot in wide bowls so each portion gets a good mix of broth, pasta, vegetables, and meatballs. Crusty bread, garlic toast, or a simple green salad makes an easy accompaniment; bread is especially useful for soaking up the tomato broth. A little grated Parmesan and chopped parsley on top give the bowls a fresh, savory finish, while a small squeeze of lemon can brighten a portion that tastes especially rich.
For a fuller meal, add a side of roasted broccoli, green beans, or a crisp salad with a mild vinaigrette. Keep strongly flavored sides modest, since the soup already has tomato, herbs, and Parmesan. If serving a group, set out extra cheese, parsley, and black pepper so everyone can finish their own bowl. The recipe serves six as a main course, or more if portions are smaller and you serve it as a first course.
Variations
Use a beef-and-pork blend. Replace half the ground beef with ground pork for a softer, richer meatball flavor. You can also use all ground turkey, but the mixture will be leaner and may be less tender; avoid overmixing, and check the center with a thermometer. Ground poultry must reach 165°F (74°C), rather than the 160°F (71°C) minimum for the beef version.
Change the herbs and greens. Swap the Italian seasoning for 1 teaspoon (about 1 g) dried oregano, or use a pinch of dried thyme with fresh basil stirred in at the end. Baby kale can replace spinach; give it a few extra minutes to soften. If fresh parsley is unavailable, use 2 teaspoons (about 2 g) dried parsley in the meat mixture, but leave the garnish off or use a little fresh basil instead.
Make it more vegetable-forward. Add 1 diced zucchini (about 200 g) with the broth, or stir in a cup (150 g) of frozen peas during the final few minutes. For a brothier soup, use ¾ cup (about 128 g) orzo and leave the rest of the ingredients unchanged. For a thicker, pasta-heavy bowl, keep the full cup and have extra broth ready for reheating.
Use prepared mini meatballs. Fully cooked refrigerated or frozen meatballs can save shaping time. Follow the package directions for thawing if required, add them to the soup with the broth, and heat them until the center reaches 165°F (74°C), the USDA FSIS safe minimum for reheated food. Their seasoning and size vary, so taste the broth before adding the recipe’s full amount of salt.
Storage and Reheating
Because the orzo continues to absorb broth as it sits, this soup is at its loosest when freshly made. Refrigerate leftovers within 2 hours, in shallow airtight containers, and use them within 3–4 days. For easier reheating, store extra broth separately if you know you will have leftovers; otherwise, simply loosen the soup with broth or water when warming it. Do not leave cooked soup at room temperature for an extended period.
Reheat an individual serving in the microwave, covered loosely and stirred partway through, or warm a larger amount in a saucepan over medium-low heat. Add a splash of broth or water before heating, since the pasta thickens the soup in the refrigerator. Stir regularly and heat leftovers to 165°F (74°C), checking with a food thermometer. Avoid a hard boil, which can break up the meatballs and make the orzo overly soft.
To freeze, cool the soup promptly and freeze it in airtight, freezer-safe containers for up to 2 months for best quality. The orzo may soften after thawing, so if you are making the soup specifically for the freezer, cook and freeze the meatball-tomato broth without the pasta and spinach. Thaw it in the refrigerator, bring it to a simmer, cook fresh orzo in the broth, then add spinach. Reheat the thawed soup to 165°F (74°C).
Frequently Asked Questions
Can I make the meatballs ahead? Yes. Shape them up to a day ahead, arrange them in a covered container, and refrigerate until you are ready to brown them. Keep raw meat separate from ready-to-eat foods, and cook the meatballs as directed. You can also freeze the uncooked balls on a tray until firm, then transfer them to a freezer-safe container; thaw them in the refrigerator before browning for more even cooking.
Can I use frozen mini meatballs in this soup? Yes, provided they are fully cooked. Add them according to the package instructions and allow enough time for them to heat through in the soup; check that the center reaches 165°F (74°C). Frozen meatballs can release a little extra moisture and may already be salty, so taste the broth before adding more seasoning. The soup’s texture and flavor will vary with the meatball brand or recipe.
What can I use instead of orzo? Small pasta shapes such as ditalini, small shells, or acini di pepe work well. Check the package cooking time and begin tasting a few minutes before that time, since pasta size and brands differ. Rice can be used, but it takes a different amount of liquid and a different cooking time, so it is better to cook it separately and spoon it into bowls than to substitute it measure for measure.
Why did my soup become so thick? Orzo keeps absorbing broth after the pot comes off the heat, and it continues to do so during storage. Stir in warm broth or water a little at a time until the soup reaches the consistency you like. If the soup is thickening while it cooks, check that it is simmering gently rather than boiling hard, and stir the bottom of the pot so the pasta does not clump or stick.
How do I know the homemade meatballs are done? Use a food thermometer in the center of one of the larger meatballs. Ground beef should reach 160°F (71°C), the USDA FSIS safe minimum internal temperature for ground meat. The meatballs may look browned before they are cooked through, so color alone is not a reliable check. If a meatball has not reached the safe temperature, simmer the soup a little longer and check again.
Can I prepare the whole soup in advance? You can, but the orzo will soften and soak up broth as the soup stands. For the best make-ahead texture, prepare the tomato broth and meatballs, chill them promptly, then reheat and cook the orzo shortly before serving. If you have already cooked the complete soup, refrigerate it within 2 hours and reheat portions with extra broth; bring leftovers to 165°F (74°C).
Related
- Pink Sangria Recipe with Rosé, Citrus, and Fresh Berries
- Pineapple Moscow Mule: Bright, Spicy Cocktail Recipe
- Pimm’s and Lemonade Recipe: A Classic British Summer Cup
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).