Moroccan meatball soup is a warmly spiced tomato broth with tender beef or lamb meatballs, chickpeas, and vegetables. This Moroccan-inspired version is hearty enough for a main meal, while cumin, ginger, cinnamon, and ras el hanout give the broth depth without making it complicated; recipes and seasoning vary across families and regions.
Ingredients
- For the meatballs: 1 pound (450 g) ground beef or ground lamb
- ½ cup (55 g) fine dry breadcrumbs
- 1 large egg (about 50 g, without shell)
- ½ cup (75 g) finely grated yellow onion
- ¼ cup (15 g) finely chopped fresh flat-leaf parsley, plus more to serve
- 1 teaspoon (2 g) ground cumin
- ½ teaspoon (1 g) sweet paprika
- ½ teaspoon (1 g) fine salt
- ¼ teaspoon (0.5 g) ground black pepper
- For the soup: 2 tablespoons (30 ml) olive oil
- 1 medium yellow onion (about 150 g), finely diced
- 3 garlic cloves (about 9 g), minced
- 1 tablespoon (16 g) tomato paste
- 1 teaspoon (2 g) ground cumin
- 1 teaspoon (2 g) ras el hanout
- ½ teaspoon (1 g) ground ginger
- ½ teaspoon (1 g) ground turmeric
- ¼ teaspoon (0.5 g) ground cinnamon
- 1 can diced tomatoes, 14½ ounces (411 g)
- 6 cups (1.42 L) low-sodium beef or vegetable broth
- 1 can chickpeas, 15 ounces (425 g; about 1½ cups or 240 g drained), rinsed and drained
- 2 medium carrots (about 160 g), peeled and cut into ¼-inch (6 mm) rounds
- 1 medium zucchini (about 200 g), cut into ½-inch (1.25 cm) pieces
- 1 teaspoon (6 g) fine salt, plus more to taste
- ¼ teaspoon (0.5 g) ground black pepper, plus more to taste
- 1 tablespoon (15 ml) fresh lemon juice
- ¼ cup (15 g) chopped fresh cilantro or parsley, for serving
Instructions
- Mix and shape the meatballs, 25 minutes. In a medium bowl, combine the ground meat, breadcrumbs, egg, grated onion, parsley, cumin, paprika, salt, and pepper. Mix gently with a fork or clean hands just until evenly combined; working it too much can make the meatballs dense. Shape into about 24 meatballs, each roughly 1¼ inches (3 cm) across. Set them on a plate while you dice the soup vegetables and measure the spices. Keep raw meat and its utensils separate from ready-to-eat ingredients.
- Brown the meatballs, 8 minutes. 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, and brown them for about 8 minutes total, turning carefully so several sides color. They do not need to cook through yet. Transfer them to a clean plate; leave the browned bits and a thin film of fat in the pot. If the pan looks dry, add a teaspoon of oil rather than letting the fond scorch.
- Build the spiced base, 6 minutes. Add the diced onion to the pot and cook for 5 minutes, stirring occasionally, until softened and translucent at the edges. Stir in the garlic, tomato paste, cumin, ras el hanout, ginger, turmeric, and cinnamon. Cook for 1 minute, stirring constantly, until fragrant. If the spices begin to stick, add a splash of broth and scrape the bottom of the pot to loosen the browned flavor.
- Simmer the chickpeas and carrots, 12 minutes. Add the diced tomatoes, broth, chickpeas, carrots, salt, and pepper. Stir well and bring the soup to a gentle boil, then lower the heat so it simmers steadily without splashing. Cook uncovered for 12 minutes, stirring once or twice. The carrots should begin to soften but will still have some bite; they finish cooking with the meatballs.
- Finish cooking the meatballs and zucchini, 15 minutes. Nestle the browned meatballs into the broth and simmer gently for 7 minutes. Add the zucchini, then continue simmering for 8 minutes, or until the carrots and zucchini are tender and the meatballs are cooked through. Check the center of a large meatball with a food thermometer: USDA FSIS recommends a safe minimum internal temperature of 160°F (71°C) for ground beef or lamb. If needed, simmer a few minutes longer and check again.
- Season and serve. Turn off the heat and stir in the lemon juice. Taste the broth and adjust the salt, pepper, or lemon to suit your preference. Ladle into warm bowls and scatter with cilantro or parsley. Let the soup stand for a few minutes before eating so the broth is comfortable to serve and the flavors settle.
Tips
- Keep the meatballs tender. Mix only until the ingredients are distributed and shape them with a light touch. If the mixture sticks to your hands, dampen your palms with water. Breadcrumbs and egg help hold the meatballs together, but adding extra breadcrumbs can make them dry and firm.
- Choose the meat to suit your taste. Ground beef gives a familiar, savory flavor; lamb is richer and pairs especially well with the warm spices. A half-and-half mix works too. If using lean meat, avoid overbrowning and do not extend the simmer once the safe temperature is reached.
- Adjust the spice level thoughtfully. Ras el hanout is a North African spice blend whose ingredients and strength vary by maker. If it is unavailable, use ½ teaspoon (1 g) extra cumin and ½ teaspoon (1 g) paprika in its place; the soup will still be aromatic but less complex. Taste before adding extra salt, particularly if your broth is not low-sodium.
- Keep the simmer gentle. A rolling boil can break up meatballs and make the vegetables mushy. After bringing the broth to a boil, lower the heat until you see small, steady bubbles. Turn meatballs carefully with a spoon rather than stirring vigorously.
Serving Suggestions
Serve the soup hot in deep bowls, making sure each portion gets several meatballs, chickpeas, vegetables, and plenty of broth. Warm Moroccan-style bread, pita, or crusty bread is useful for soaking up the tomato broth. For a more filling meal, offer cooked couscous or rice on the side, or spoon a modest amount into each bowl before ladling over the soup. Keep the grains separate until serving if you expect leftovers, since they absorb broth as they sit.
A little extra lemon, chopped cilantro or parsley, and freshly ground black pepper make simple toppings. If you enjoy a spicy finish, put harissa on the table so everyone can add it to taste. A crisp cucumber and tomato salad or lightly dressed greens provide a fresh contrast to the rich, warm-spiced broth. The soup is substantial enough to serve on its own, but bread and a small salad make a balanced-feeling dinner without adding much work.
Variations
Use a different vegetable combination. Replace the zucchini with 1½ cups (200 g) chopped pumpkin, butternut squash, or chopped green beans. Add firm squash with the carrots so it has enough time to soften; add green beans with the zucchini. Small changes in vegetables are common in home-style soups, and the broth remains the same.
Make it with lentils. For a heartier soup, replace the chickpeas with ¾ cup (150 g) dried brown or green lentils, rinsed and picked over. Add them with the broth and tomatoes, then simmer until tender, following the package timing; this will usually require more than the 12-minute vegetable simmer in the main recipe. Add extra broth if the lentils absorb too much liquid, and check the meatballs for the required internal temperature as directed.
Make a meat-free version. Omit the meatballs and use vegetable broth. Add another can of drained chickpeas or 1½ cups (about 250 g) cooked lentils, and simmer until the carrots are tender. This changes the character of the soup but keeps its tomato, chickpea, and spice profile. For a different meatball, use a prepared plant-based option according to its package directions, since cooking times and safe handling vary by product.
Change the herbs or seasoning. Cilantro is a common fresh finish, but parsley is an easy substitute with a milder, greener flavor. If you do not have ras el hanout, the cumin-and-paprika substitute in the tips works; a small pinch of allspice can add extra warmth, though it will not reproduce the blend exactly. Avoid adding a large amount of cinnamon, which can overwhelm the savory broth.
Storage and Reheating
Cool the soup promptly and refrigerate it within 2 hours of cooking, divided into shallow airtight containers if you have a large pot. It keeps for 3 to 4 days in the refrigerator. The meatballs and chickpeas may soak up some broth as they rest, so keep a little extra broth or water available when reheating. If you plan to freeze portions, freeze the soup without any bread, rice, or couscous; it keeps best for about 2 to 3 months for quality. Thaw frozen soup overnight in the refrigerator.
Reheat a portion in a covered saucepan over medium-low heat, stirring gently, until steaming throughout. Add a splash of broth or water if it has thickened. For food safety, USDA FSIS guidance is to reheat leftovers to 165°F (74°C); check the center with a food thermometer, especially when reheating a deep or large portion. You can also microwave it in a covered microwave-safe bowl, stirring partway through and checking the temperature in more than one spot. Do not reheat only until the surface is warm.
Frequently Asked Questions
Can I make Moroccan meatball soup ahead?
Yes. You can shape the meatballs a day ahead and keep them covered in the refrigerator, separate from the vegetables. The finished soup can also be cooked ahead and refrigerated for up to 3 to 4 days. Reheat it gently to 165°F (74°C); add a little broth if it thickens. The vegetables soften somewhat after storage, so for the firmest zucchini, add it near the end when making the soup fresh.
Can I bake the meatballs instead of browning them?
Yes, though browning them in the soup pot adds browned bits that deepen the broth. To bake, arrange the raw meatballs on a lined rimmed sheet pan and bake at 400°F (204°C) until browned and cooked through to 160°F (71°C), checking with a thermometer. Add them to the soup after the carrot simmer and warm them in the broth for a few minutes. Baking time varies with meatball size, so temperature—not color alone—is the reliable check.
Why did my meatballs fall apart?
They may have been mixed too loosely, shaped too softly, or stirred hard before they had time to set. Make sure the egg and breadcrumbs are evenly mixed through the meat, shape compact balls without squeezing them tightly, and brown them in batches so they are not crowded. Once they go into the broth, keep the simmer gentle and turn them with care. A small amount of crumbling is harmless and will still flavor the soup.
Is ras el hanout essential?
No. Ras el hanout adds a layered, fragrant flavor, but blends differ and are not always easy to find. Use the cumin-and-paprika substitute listed in the tips if needed; the result will taste simpler but still work well with the tomato, chickpeas, and meatballs. If you have a different ras el hanout blend, start with the stated teaspoon and adjust only after tasting the broth.
Can I make the soup thicker or thinner?
For a thicker bowl, simmer the soup uncovered for a few extra minutes before adding the zucchini, or mash a few chickpeas against the side of the pot and stir them in. To thin it, add broth or water a little at a time after the meatballs have cooked, then taste and correct the seasoning. Avoid boiling hard to reduce the liquid, since that can overcook the vegetables and make the meatballs fragile.
Related
- Moroccan Okra Stew with Chickpeas and Tomato
- Moroccan Meatball Stew with Tomato and Warm Spices
- Curry Height in Feet: The Answer and a Curry Recipe
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).