Cauliflower and Garlic Meatball Stew (خورش گل کلم با سیر) — Aromatic Persian Khoresht with Piaz Dagh
Khoresht-e Gol Kalam ba Seer is a refined Iranian stew where tender cauliflower meets garlicky, saffron-scented meatballs. It reflects Persia’s love of balanced tang, slow simmering, and the deep sweetness of piaz dagh.

Printable Recipe Card
Servings: 4 · Total: 105 min · Difficulty: medium
Ingredients (quick list)
- 600 g Cauliflower florets (Cut into 4–5 cm florets)
- 450 g Ground lamb (or beef, 85% lean) (Well-chilled for easier shaping)
- 200 g Yellow onion (Grated, then squeezed very dry)
- 8 g Salt (About 1 1/4 tsp fine salt)
- 1 tsp Black pepper (Freshly ground)
- 45 ml Cooking oil (Neutral oil such as grapeseed or sunflower)
- 30 g Fresh garlic cloves (Finely sliced or minced (about 8–10 cloves))
- 30 g Tomato paste (About 2 tbsp)
- 700 ml Water (Hot water helps maintain a steady simmer)
- 30 ml Brewed saffron (From 1/2 tsp saffron bloomed in 30 ml hot water)
- 30 ml Lemon juice (Freshly squeezed (2 tbsp))
Steps (summary)
- Bloom the saffron by grinding 1/2 tsp threads and mixing with 30 ml hot water, then cover and set aside for 10 minutes. This st…
- Make the meatball mixture by combining the ground meat, grated-and-squeezed onion, 8 g salt, and 1 tsp black pepper in a bowl.…
- With damp hands, shape the mixture into 16 meatballs, about 35–40 g each, and place them on a plate. Refrigerate them for 10 mi…
- Heat 30 ml of the oil in a wide pot over medium-high heat, then add the cauliflower florets in a single layer. Fry for 6–8 minu…
- Add the remaining 15 ml oil to the same pot and lower the heat to medium, then add the sliced onion. Cook for 12–15 minutes, st…
- Stir in the garlic and cook for 60–90 seconds until fragrant, keeping the heat moderate so it does not scorch. Add the tomato p…
+ 4 more steps in the full instructions section below.
Cultural Background
Khoresht traditions celebrate slow-simmered balance: sweet piaz dagh, gentle sourness, and perfume from saffron. This cauliflower-and-garlic version highlights Iran’s seasonal vegetable cookery while keeping the comforting structure of a classic meat stew.
Equipment
💡 Tips
- Squeeze the grated onion for the meatballs until very dry; aim to remove at least 60 ml liquid to prevent meatballs from falling apart.
- Fry the cauliflower until lightly golden to keep it firm during simmering and to avoid a sulfurous boiled flavor.
- Keep the stew at a gentle simmer; strong boiling can break meatballs and turn the cauliflower grainy.
⚠️ Common Mistakes
❌ Meatballs fall apart in the stew.
✅ Fix: Squeeze onion very dry, knead the mixture until tacky, chill 10 minutes, and keep the broth at a gentle simmer rather than a rolling boil.
❌ Garlic tastes bitter or burnt.
✅ Fix: Add garlic after onions are golden and cook only 60–90 seconds before adding tomato paste and liquid; keep heat at medium.
❌ Cauliflower turns mushy and smells overly sulfurous.
✅ Fix: Fry florets until lightly golden first, then add them only after meatballs have simmered and set for 15 minutes.
🧊 How to Store
Cool leftovers within 2 hours, then refrigerate in a sealed container for up to 3 days. Reheat gently in a pot over low heat with 60 ml water, covered, until steaming hot; aggressive boiling can toughen meatballs and over-soften cauliflower.
📅 Make Ahead
Shape the meatballs up to 24 hours ahead and refrigerate covered. You can also fry the cauliflower and onions earlier the same day; rewarm them briefly before building the stew to keep flavors fresh.
🍽️ Pairs Well With
- Chelow
- tahdig
- torshi
- fresh herbs (sabzi khordan)
- mast-o-khiar.
Regional Variations
- Northern-style: replace lemon juice with 30 ml verjuice for a softer sourness and a greener, fruitier finish.
- Tehran home-style: increase tomato paste to 45 g for a deeper red color and slightly sweeter sauce.
- Garlic-forward: add 10 g extra sliced garlic during the last 5 minutes for a sharper, more medicinal bite.
Ingredients
- 1⅓ lbCauliflower florets (Cut into 4–5 cm florets)
- 16 ozGround lamb (or beef, 85% lean) (Well-chilled for easier shaping)
- 7.1 ozYellow onion (Grated, then squeezed very dry)
- 8 gSalt (About 1 1/4 tsp fine salt)
- 1 tspBlack pepper (Freshly ground)
- 3 tbspCooking oil (Neutral oil such as grapeseed or sunflower)
- 1.1 ozFresh garlic cloves (Finely sliced or minced (about 8–10 cloves))
- 1.1 ozTomato paste (About 2 tbsp)
- 3 cupWater (Hot water helps maintain a steady simmer)
- 2 tbspBrewed saffron (From 1/2 tsp saffron bloomed in 30 ml hot water)
- 2 tbspLemon juice (Freshly squeezed (2 tbsp))
🔄 Substitutions
- Ground lamb (or beef, 85% lean)→ Ground turkey (93% lean)
- Lemon juice→ Verjuice (ab-ghooreh), 30 ml
- Cooking oil→ Ghee, 30 ml
Instructions
- 1
Bloom the saffron by grinding 1/2 tsp threads and mixing with 30 ml hot water, then cover and set aside for 10 minutes. This step builds the stew’s signature aroma and gives the broth a golden hue.
- 2
Make the meatball mixture by combining the ground meat, grated-and-squeezed onion, 8 g salt, and 1 tsp black pepper in a bowl. Knead firmly for 3–4 minutes until the mixture becomes tacky and cohesive, which helps the meatballs hold together while simmering.
- 3
With damp hands, shape the mixture into 16 meatballs, about 35–40 g each, and place them on a plate. Refrigerate them for 10 minutes so the fat firms up, which reduces cracking and sticking during browning.
- 4
Heat 30 ml of the oil in a wide pot over medium-high heat, then add the cauliflower florets in a single layer. Fry for 6–8 minutes, turning occasionally, until lightly golden on several sides; this keeps the cauliflower intact and adds a nutty depth. Transfer the cauliflower to a plate.
- 5
Add the remaining 15 ml oil to the same pot and lower the heat to medium, then add the sliced onion. Cook for 12–15 minutes, stirring often, until deeply golden and sweet like classic piaz dagh; this forms the stew’s backbone. If the onions brown too fast, add 15 ml water to slow the caramelization without steaming them pale.
- 6
Stir in the garlic and cook for 60–90 seconds until fragrant, keeping the heat moderate so it does not scorch. Add the tomato paste and fry it for 2 minutes, stirring constantly, until it darkens slightly and smells sweet rather than raw.
- 7
Pour in 700 ml hot water and scrape the bottom of the pot to dissolve the flavorful fond into the broth. Add the brewed saffron, bring to a gentle boil, then reduce to a steady simmer for 5 minutes to unify the aromatics.
- 8
Gently slide the chilled meatballs into the simmering broth, spacing them apart so they do not stick. Simmer uncovered for 15 minutes without vigorous stirring; instead, swirl the pot occasionally so the meatballs set without breaking.
- 9
Return the fried cauliflower to the pot, nestling florets between the meatballs. Cover and simmer on low for 25–30 minutes until the meatballs are cooked through and the cauliflower is tender but not mushy; the sauce should look glossy and lightly thickened.
- 10
Finish the stew by stirring in 30 ml lemon juice, 4 g salt, and 1/2 tsp black pepper, then simmer uncovered for 5 minutes to round out the tang. Rest the pot off heat for 10 minutes before serving so the flavors settle and the oil rises slightly to the top in the Persian style.
🪪 Recipe Passport
Cultural Background
Khoresht traditions celebrate slow-simmered balance: sweet piaz dagh, gentle sourness, and perfume from saffron. This cauliflower-and-garlic version highlights Iran’s seasonal vegetable cookery while keeping the comforting structure of a classic meat stew.
Regional Variations
Researched from multiple sources and validated by the Zaffaron editorial team. Every recipe is tested for accuracy, measurements, and cultural authenticity.
Nutrition per serving
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

Smoked Silk Mirza Ghasemi (میرزا قاسمی) — Silky smoked eggplant with tomato, garlic, and eggs
Persian · Appetizers · 60 min

Mast-o-Khiar (ماست و خیار) — Persian Cucumber and Herb Yogurt Dip
Persian · Side Dishes · 25 min

Shirazi Salad (سالاد شیرازی) — Brunoised cucumber-tomato herb salad with ab-ghooreh
Persian · Salads · 20 min

Spetsofai (Σπετσοφάι) — Pelion Sausage and Pepper Stew
Greek · Stews · 65 min

Coq au Vin (Coq au vin) — Burgundy Chicken Braised in Red Wine
French · Stews · 160 min

Cig Kofte (Çiğ Köfte) — Isot-kissed bulgur kneaded and served in lettuce
Turkish · Appetizers · 25 min

Turkish Tomato Soup (Domates Çorbası) — Velvety butter-finished grated tomato soup
Turkish · Soups · 35 min

Spas (Սպաս) — Armenian Yogurt-and-Wheat Soup
Armenian · Soups · 70 min
Reviews
Cooked this recipe?
Tap the stars to rate it — that's all it takes. A few words are welcome but optional.
No ratings yet. Cooked this one? Be the first to rate it — it takes one tap.