Skip to content
Zaffaron

Kufteh Sabzi (کوفته سبزی) — Persian Herb Meatballs in Broth

Shiraz-style Kufteh Sabzi are large herb-packed meatballs simmered in a golden, aromatic broth. They’re bound with rice and chickpeas and traditionally hide a sweet-savory raisin center for a comforting, fragrant meal.

By Zaffaron Kitchen· Published April 2, 2026 Verified Recipe
Gluten-Free Dairy-Free Nut-Free Halal
225 min total Prep 150m · Cook 75m 6 servings 470 cal ~$3.15/serving
↓ Jump to Recipe
Kufteh Sabzi — Persian Herb Meatballs in Broth - authentic persian recipe

Printable Recipe Card

Servings: 6 · Total: 225 min · Difficulty: hard

Ingredients (quick list)

  • 120 g Dried chickpeas (soaked 8–12 hours, drained)
  • 1500 ml Water (divided for boiling chickpeas and broth)
  • 90 g Basmati rice (rinsed until water runs mostly clear)
  • 450 g Yellow onions (2 large; 350 g grated for meatball mixture, 100 g finely diced for broth)
  • 700 g Ground meat (80–85% lean beef or lamb)
  • 80 g Fresh parsley (finely chopped)
  • 50 g Fresh cilantro (finely chopped)
  • 25 g Fresh dill (finely chopped)
  • 20 g Fresh chives (finely chopped)
  • 15 g Fresh fenugreek leaves (finely chopped)
  • 14 g Salt (about 2 1/2 tsp, divided)
  • 4 g Turmeric (about 2 tsp, divided)

+ 2 more in the full ingredients section below.

Steps (summary)

  1. Soak the chickpeas in plenty of cool water for 8–12 hours, then drain. In a pot, add chickpeas and 900 ml water and bring to a…
  2. Cook the rice to help it bind the meatballs. Add rinsed basmati rice to a small saucepan with 250 ml water and 2 g salt. Bring…
  3. Prepare the herb medley. Wash, dry, and finely chop parsley, cilantro, dill, chives, and fenugreek leaves. Keep the herbs very…
  4. Make the meatball mixture. In a large bowl, combine ground meat, grated onion (350 g), cooked rice, cooked chickpeas, chopped h…
  5. Shape and stuff. Divide the mixture into 6 equal portions (about 190–200 g each). Flatten one portion in your palm, place 15 g…
  6. Start the broth. In a wide pot (at least 5–6 liters), combine 350 ml water, diced onion (100 g), remaining 4 g salt, 1 g turmer…

+ 2 more steps in the full instructions section below.

Cultural Background

Herb-rich meatballs simmered in broth are a familiar home-style preparation in several regions of Iran, including Shiraz, where variations are often served as comforting family meals. The combination of herbs, legumes, and a sweet center reflects a traditional preference for balanced flavors and hearty, shareable dishes.

savoryherbaceousgently sweetwarmly spicedtenderjuicysoft chickpeasplump raisinsfresh herbsonionturmeric warmth🌶 mild

Equipment

Large mixing bowlBox graterChef’s knife and cutting boardFine-mesh strainerSmall saucepan with lidLarge wide pot with lid (5–6 liters)Kitchen scaleInstant-read thermometer (optional)

💡 Tips

  • Kneading until the mixture turns sticky is the main secret for intact meatballs; stop only when it clings to your hand slightly.
  • Keep the simmer gentle—rapid boiling can break the meatballs before they set.
  • If your herbs are very watery, pat them dry before chopping to avoid a loose mixture.
  • For cleaner shaping, lightly wet your hands with cool water between meatballs.
  • Cool the rice and chickpeas before mixing so the fat in the meat does not melt too early.

⚠️ Common Mistakes

  • ❌ Skipping thorough kneading of the meatball mixture

    💡 Why: Without enough mixing, proteins do not bind and the meatballs can crack and fall apart in the broth.

    ✅ Fix: Knead 8–10 minutes until sticky and cohesive; if still loose, chill the mixture 20 minutes before shaping.

  • ❌ Boiling the broth hard after adding meatballs

    💡 Why: Aggressive bubbling shakes the meatballs before they set, causing breakage and a cloudy broth.

    ✅ Fix: Maintain a gentle simmer with only small bubbles; partially cover and lower heat as needed.

  • ❌ Using wet herbs or hot rice/chickpeas

    💡 Why: Extra moisture and heat weaken structure and can make the mixture soft and hard to seal around the filling.

    ✅ Fix: Dry herbs well and cool rice/chickpeas completely; spread on a tray to speed cooling.

🧊 How to Store

Cool leftovers within 2 hours. Refrigerate meatballs in broth in an airtight container for up to 3 days. Reheat covered at a gentle simmer 10–15 minutes; avoid hard boiling. Freeze up to 2 months; thaw overnight in the refrigerator before reheating.

📅 Make Ahead

Soak chickpeas up to 24 hours ahead. Cook chickpeas and rice 1 day ahead and refrigerate. Mix and shape meatballs up to 8 hours ahead; keep covered and chilled, then simmer just before serving for best texture.

🍽️ Pairs Well With

  • Steamed basmati rice
  • Flatbread
  • Fresh herbs and radishes
  • Pickled vegetables

Regional Variations

  • Shiraz and Fars ProvinceOften emphasizes a generous mix of fresh herbs and a sweet center such as raisins; the broth is typically lightly spiced and served with rice or bread.
  • Northwest IranSome versions shape larger single meatballs and may include additional fillings like cooked legumes or dried fruit, with broth quantity adjusted so it can be served more like a stew.
family dinner weekend cooking cold-weather meals gatherings
#comfort food#one-pot#herb-forward#high-protein#gluten-free

Ingredients

  • 120 gDried chickpeas (soaked 8–12 hours, drained)
  • 1500 mlWater (divided for boiling chickpeas and broth)
  • 90 gBasmati rice (rinsed until water runs mostly clear)
  • 450 gYellow onions (2 large; 350 g grated for meatball mixture, 100 g finely diced for broth)
  • 700 gGround meat (80–85% lean beef or lamb)
  • 80 gFresh parsley (finely chopped)
  • 50 gFresh cilantro (finely chopped)
  • 25 gFresh dill (finely chopped)
  • 20 gFresh chives (finely chopped)
  • 15 gFresh fenugreek leaves (finely chopped)
  • 14 gSalt (about 2 1/2 tsp, divided)
  • 4 gTurmeric (about 2 tsp, divided)
  • 2 gBlack pepper (about 1 tsp, divided)
  • 90 gSultana raisins (rinsed; soak in warm water 10 minutes, then drain)

🔄 Substitutions

  • Ground meat (beef or lamb)→ Ground turkey (93% lean)
  • Fresh fenugreek leaves→ 1 tsp dried fenugreek leaves (kasuri methi), crushed
  • Sultana raisins→ Golden raisins or chopped dates

Instructions

  1. 1

    Soak the chickpeas in plenty of cool water for 8–12 hours, then drain. In a pot, add chickpeas and 900 ml water and bring to a boil. Reduce to a steady simmer and cook 45–60 minutes until tender. Drain well and cool 10 minutes so they do not steam the meat mixture.

  2. 2

    Cook the rice to help it bind the meatballs. Add rinsed basmati rice to a small saucepan with 250 ml water and 2 g salt. Bring to a boil, cover, and cook on low for 10 minutes. Rest off heat 10 minutes, then fluff and spread on a plate to cool completely.

  3. 3

    Prepare the herb medley. Wash, dry, and finely chop parsley, cilantro, dill, chives, and fenugreek leaves. Keep the herbs very fine so the meatballs hold together. Set aside 5 minutes to let excess surface moisture evaporate; wet herbs can weaken the mixture.

  4. 4

    Make the meatball mixture. In a large bowl, combine ground meat, grated onion (350 g), cooked rice, cooked chickpeas, chopped herbs, 10 g salt, 3 g turmeric, and 1.5 g black pepper. Knead vigorously by hand for 8–10 minutes until the mixture becomes sticky and cohesive.

  5. 5

    Shape and stuff. Divide the mixture into 6 equal portions (about 190–200 g each). Flatten one portion in your palm, place 15 g drained sultana raisins in the center, then gather and seal the meat around them. Roll firmly between your hands for 30–45 seconds to remove cracks.

  6. 6

    Start the broth. In a wide pot (at least 5–6 liters), combine 350 ml water, diced onion (100 g), remaining 4 g salt, 1 g turmeric, and 0.5 g black pepper. Bring to a gentle boil over medium heat, then reduce to a low simmer for 5 minutes to soften the onion.

  7. 7

    Simmer the meatballs carefully. Add the meatballs one by one, leaving space between them. Add the remaining water (about 350 ml) to reach a shallow simmering level; the liquid should come halfway up the meatballs. Cover partially and simmer very gently 45–55 minutes, turning once at 25 minutes.

  8. 8

    Finish and serve. The meatballs are done when the broth is fragrant and lightly thickened and the centers reach 71°C/160°F. Rest the pot off heat, covered, for 10 minutes so the meatballs set. Serve each meatball with broth ladled over and extra raisins from the center if desired.

🪪 Recipe Passport

Origin: Persian Cuisine
Researched by: Zaffaron Kitchen
Published: April 2, 2026

Cultural Background

Herb-rich meatballs simmered in broth are a familiar home-style preparation in several regions of Iran, including Shiraz, where variations are often served as comforting family meals. The combination of herbs, legumes, and a sweet center reflects a traditional preference for balanced flavors and hearty, shareable dishes.

Regional Variations

Shiraz and Fars Province: Often emphasizes a generous mix of fresh herbs and a sweet center such as raisins; the broth is typically lightly spiced and served with rice or bread.
Northwest Iran: Some versions shape larger single meatballs and may include additional fillings like cooked legumes or dried fruit, with broth quantity adjusted so it can be served more like a stew.

Researched from multiple sources and validated by the Zaffaron editorial team. Every recipe is tested for accuracy, measurements, and cultural authenticity.

Share:

Nutrition per serving

470
Calories
33g
Protein
24g
Fat
32g
Carbs
5g
Fiber
820mg
Sodium

Pairs well with

If you enjoyed this recipe, here are a few related Zaffaron recipes to try next.

Does your family make this differently?

Every family has their own version. Maybe your grandmother adds a secret ingredient, or your aunt has a completely different technique. Preserve your family's version — with their name on it, forever.

You Might Also Like

Reviews

—
Rated 0.0 out of 5 stars
0 reviews

Cooked this recipe?

Tap the stars to rate it — that's all it takes. A few words are welcome but optional.

Please sign in to rate this recipe.
Rated 0.0 out of 5 stars

No ratings yet. Cooked this one? Be the first to rate it — it takes one tap.