One-Pot Meatball Zucchini Soup
(deep umami broth, one pan, no fuss)
This meatball zucchini soup is the definition of comfort food. Soft, umami zucchini and chewy beef meatballs sit in a deep brown broth that tastes like it simmered all day, but the whole thing comes together in one pot in under an hour. The secret is not a long ingredient list, it is the pan. Brown the meatballs hard in a wide, uncoated pan, let some of that meat stick and char to the bottom, then build the broth right on top of it. That fond is what turns plain water into a rich, savory soup with almost no effort.
Deep brown broth, soft zucchini, chewy meatballs, all from one pan
Why This Meatball Zucchini Soup Works
Most quick soups taste like quick soups, thin and a little flat, because nothing had time to develop real flavor. This meatball zucchini soup gets around that with a trick borrowed from stews and ragus: fond. When you sear the meatballs hard in an uncoated pan, some of the meat sticks and browns onto the metal. That stuck-on layer is concentrated flavor, and when the vegetables and then the water hit the pan, it dissolves back in and turns into a broth that tastes like it took hours.
The other reason this works is the pan choice. A non-stick pan is the enemy here, its whole job is to stop food from sticking, which is exactly what you need to happen. A wide, low, uncoated stainless steel or aluminum pan lets the meatballs really grip the surface as they brown, which is where all that deep, savory color comes from.
Ground beef needs to reach a safe internal temperature before it is ready to eat. The USDA’s guidance on ground beef puts that at 160°F (71°C), and a 30 minute simmer in liquid, after an initial sear, comfortably gets small meatballs like these well past that mark.
How to Make It, Step by Step
- In a bowl, season the ground beef with some of the salt.
- Roll into small meatballs, roughly a tablespoon each, and set aside.
- Do not overwork the meat while rolling, a light touch keeps the meatballs tender.
- Heat up some oil in a wide, low, uncoated pan. Do not use a non-stick pan, it defeats the purpose.
- Add the meatballs and let them fry undisturbed until well browned on one side.
- Flip them over. You will notice some of the meat is now stuck to the pan, that is exactly what you are looking for. All that stuck-on flavor is going to dissolve into the soup later and turn it deep brown and savory.
- Once both sides are browned, take the meatballs out of the pan and set them aside.
- In the same pan, no need to clean it, add the roughly chopped onion, garlic, celery stems and zucchini, cut into medium pieces.
- Heat the vegetables up and salt them a little.
- Let them pick up color and soften slightly, a few minutes on medium heat is enough.
- Add the meatballs back into the pan with the vegetables.
- Add the fresh herbs, the dill and the celery leaves, along with the chicken powder.
- Pour in enough water or chicken stock to cover the meatballs about three quarters of the way.
- Cover and bring to a boil.
- Once boiling, take a spatula and scrape the bottom of the pan to lift up as much of the stuck-on browned bits as you can, then stir well so they dissolve into the broth.
- Drop the heat to the lowest setting.
- Cook for at least 30 minutes, so the flavors have time to come together and the zucchini turns soft and silky.
- Taste and adjust the salt right before serving.
- 🍳 Use an uncoated pan: Stainless steel or aluminum only. A non-stick surface stops the fond from forming, and the fond is most of the flavor in this soup.
- 🥄 Scrape the bottom right after boiling: Do it the moment the liquid comes to a boil, while the pan is still hot and the stuck-on bits lift easily.
- 👐 Roll the meatballs small and even: About a tablespoon each. Smaller meatballs brown faster and cook through evenly during the simmer.
- 🌿 Add the dill at two points if you have extra: A little in with the celery leaves for cooking, and a fresh handful on top right before serving for a brighter finish.
- ❄️ It keeps and freezes well: Cool completely, then store in the fridge for up to 3 days or freeze for up to 3 months. The broth actually deepens in flavor overnight.
- 🍲 Short on time? Use chicken stock instead of water: It shortens the gap between a good soup and a great one, especially if you rushed the browning step.
What to Serve With It
This soup is filling enough on its own, but a little starch on the side turns it into a full meal. A thick slice of no knead dutch oven bread is perfect for mopping up the last of the broth. If you are in the mood for more of this style of cooking, my Middle Eastern stuffed zucchini uses the same zucchini and ground beef pairing in a completely different form, and my beet kibbeh soup is another one-pot dinner built the same way, brown first, then simmer low and slow.
Frequently Asked Questions
Let me know in the comments how your meatball zucchini soup turned out, and whether you went with water or chicken stock. If you liked this one, my beet kibbeh soup and Middle Eastern stuffed zucchini are both built around the same idea of getting a lot of flavor out of a short ingredient list.