Skip to content
Zaffaron

Esfanaj Polo (اسفناج پلو) — Persian Spinach Rice Pilaf with Meatballs

Esfanaj Polo is a classic Persian pilaf layering fragrant basmati rice with sautéed spinach and tender mini meatballs, brightened with verjuice. It finishes with a golden bread tahdig for a crisp, buttery crunch.

By Zaffaron Kitchen· Published March 15, 2026 Verified Recipe
Nut-Free Halal
Contains: dairy, eggs, gluten
145 min total Prep 80m · Cook 65m 6 servings 615 cal ~$3.25/serving
↓ Jump to Recipe
Esfanaj Polo — Persian Spinach Rice Pilaf with Meatballs - authentic persian recipe

Printable Recipe Card

Servings: 6 · Total: 145 min · Difficulty: medium

Ingredients (quick list)

  • 450 g Basmati rice (rinsed until water runs mostly clear)
  • 2500 ml Water (for parboiling rice)
  • 18 g Fine sea salt (for salting parboil water)
  • 120 g Plain yogurt (for tahdig batter)
  • 1 large Egg yolk (for tahdig batter)
  • 75 ml Vegetable oil (divided, for sautéing and steaming rice)
  • 90 g Lavash bread (torn into large pieces to line the pot)
  • 250 g Yellow onion (1 large, finely grated)
  • 350 g Ground lamb (or 80/20 ground beef)
  • 2 g Black pepper (about 1 teaspoon, freshly ground)
  • 2 g Ground turmeric (about 1 teaspoon)
  • 700 g Fresh spinach (washed well, thick stems removed, roughly chopped)

+ 1 more in the full ingredients section below.

Steps (summary)

  1. Rinse the basmati rice in several changes of cool water until the water is mostly clear. Cover with fresh water and soak 45 min…
  2. Make the meatballs: squeeze excess liquid from the grated onion, reserving 1 tablespoon onion juice for moisture. Combine groun…
  3. Heat 15 ml vegetable oil in a nonstick skillet over medium-high heat. Brown the meatballs 6–8 minutes, turning to color most si…
  4. In the same skillet, add 30 ml vegetable oil and the diced onion. Cook over medium heat 8–10 minutes until translucent and ligh…
  5. Season the spinach mixture with salt and black pepper, then pour in verjuice. Simmer 2 minutes to round the tartness. Return th…
  6. Parboil the rice: bring 2500 ml water to a rolling boil in a large pot and add 18 g salt. Add drained rice and boil 6–8 minutes…

+ 3 more steps in the full instructions section below.

Cultural Background

Spinach rice pilafs are part of the broader Persian tradition of layered rice dishes where herbs or vegetables are paired with meat and finished with tahdig. Verjuice is a long-used souring agent in Iranian cooking, valued for a gentle acidity that complements greens and rice.

savorytangyearthyfluffy ricetender meatballssilky spinachcrispy tahdigtoasted riceonionturmeric🌶 mild

Equipment

Large bowl (for soaking rice)Fine-mesh colanderLarge pot (for parboiling rice)24–26 cm nonstick pot with tight-fitting lid (for steaming and tahdig)Nonstick skilletMixing bowlKitchen towel (to wrap lid)Spatula

💡 Tips

  • Dry the spinach well and cook it until most moisture evaporates; excess water softens the tahdig and makes the rice clumpy.
  • For evenly sized mini meatballs, portion with a teaspoon or small cookie scoop, aiming for about 20 g each.
  • If your verjuice is very sharp, start with 45 ml and add more at the table; tartness should brighten, not dominate.
  • A nonstick pot makes bread tahdig much more reliable; if using stainless steel, increase oil slightly and keep heat lower.
  • For extra aroma without changing the core profile, add 1 tablespoon brewed saffron water to the final rice layer before steaming.

⚠️ Common Mistakes

  • ❌ Overboiling the rice during parboil

    💡 Why: Fully cooked grains break during steaming and turn sticky, losing the distinct, fluffy texture.

    ✅ Fix: Boil only until the outside is tender but the center is still firm (6–8 minutes), then drain immediately.

  • ❌ Leaving too much moisture in the spinach mixture

    💡 Why: Steam plus spinach water softens the tahdig and can make the rice layer wet and compact.

    ✅ Fix: Sauté spinach until the pan looks mostly dry and moisture has evaporated before adding verjuice and meatballs.

  • ❌ Using high heat for the full steaming time

    💡 Why: The bottom can burn before the rice finishes steaming, especially with bread tahdig.

    ✅ Fix: Start medium heat for 10 minutes to build steam, then reduce to low for 45 minutes; rest 10 minutes before unmolding.

  • ❌ Not wrapping the lid with a towel

    💡 Why: Condensation drips back onto the rice, making the top layer wet and reducing fluffiness.

    ✅ Fix: Wrap the lid in a clean towel and tie or tuck it up so it cannot touch the burner.

🧊 How to Store

Cool leftovers within 2 hours. Refrigerate in an airtight container up to 3 days. Reheat covered with 1–2 tablespoons water in a saucepan over low heat 10–15 minutes, or microwave covered until hot. Tahdig is best fresh; re-crisp in a dry skillet 2–3 minutes per side.

📅 Make Ahead

Form meatballs up to 24 hours ahead and refrigerate covered. Cook the spinach-onion base up to 2 days ahead; cool and refrigerate, then rewarm before layering. Parboil rice the same day for best texture; if needed, parboil up to 6 hours ahead, spread on a tray to cool, and cover tightly.

🍽️ Pairs Well With

  • Shirazi salad (cucumber
  • tomato
  • onion with lemon or verjuice)
  • Plain yogurt or cucumber yogurt
  • Pickled vegetables
  • Fresh herbs platter

Regional Variations

  • Tehran-style home cookingOften uses smaller, more numerous meatballs and a brighter sour note from verjuice served at the table, with tahdig made from lavash or thin pita.
  • Northern Iran (Caspian influence)May increase the greens and onion, sometimes adding a touch more sourness and serving with fresh herb sides and pickles common to the region.
family dinner weekend lunch Nowruz-style gatherings potluck
#family-style#pilaf#tahdig#make-ahead-friendly#stovetop

Ingredients

  • 450 gBasmati rice (rinsed until water runs mostly clear)
  • 2500 mlWater (for parboiling rice)
  • 18 gFine sea salt (for salting parboil water)
  • 120 gPlain yogurt (for tahdig batter)
  • 1 largeEgg yolk (for tahdig batter)
  • 75 mlVegetable oil (divided, for sautéing and steaming rice)
  • 90 gLavash bread (torn into large pieces to line the pot)
  • 250 gYellow onion (1 large, finely grated)
  • 350 gGround lamb (or 80/20 ground beef)
  • 2 gBlack pepper (about 1 teaspoon, freshly ground)
  • 2 gGround turmeric (about 1 teaspoon)
  • 700 gFresh spinach (washed well, thick stems removed, roughly chopped)
  • 60 mlVerjuice (plus more to taste at the table)

🔄 Substitutions

  • Ground lamb→ Ground beef (80/20) or ground turkey (93% lean)
  • Verjuice→ Fresh lemon juice mixed with 1 teaspoon sugar
  • Lavash bread→ Pita bread or flour tortillas

Instructions

  1. 1

    Rinse the basmati rice in several changes of cool water until the water is mostly clear. Cover with fresh water and soak 45 minutes at room temperature, then drain well. Meanwhile, prepare the spinach mixture and meatballs so the rice can be layered while everything is hot.

  2. 2

    Make the meatballs: squeeze excess liquid from the grated onion, reserving 1 tablespoon onion juice for moisture. Combine ground meat, grated onion, salt, black pepper, turmeric, and the reserved onion juice. Knead 2 minutes until tacky, then shape into 24 mini meatballs (about 20 g each).

  3. 3

    Heat 15 ml vegetable oil in a nonstick skillet over medium-high heat. Brown the meatballs 6–8 minutes, turning to color most sides; they do not need to cook through. Transfer to a plate. Keep the skillet; any browned bits will deepen flavor in the spinach layer.

  4. 4

    In the same skillet, add 30 ml vegetable oil and the diced onion. Cook over medium heat 8–10 minutes until translucent and lightly golden. Stir in turmeric for 30 seconds, then add spinach in batches. Cook 10–12 minutes, stirring, until wilted and most moisture evaporates.

  5. 5

    Season the spinach mixture with salt and black pepper, then pour in verjuice. Simmer 2 minutes to round the tartness. Return the browned meatballs to the skillet, cover, and cook 6–8 minutes over medium-low until meatballs are cooked through (74°C/165°F internal).

  6. 6

    Parboil the rice: bring 2500 ml water to a rolling boil in a large pot and add 18 g salt. Add drained rice and boil 6–8 minutes, stirring once or twice, until the grains are tender on the outside but still firm in the center. Drain immediately in a colander and rinse briefly with cool water to stop cooking.

  7. 7

    Prepare the tahdig base: in a bowl, whisk yogurt and egg yolk until smooth, then stir in 2 tablespoons of the parboiled rice. In a heavy 24–26 cm nonstick pot, heat 75 ml vegetable oil over medium heat for 1 minute. Spread the yogurt-rice mixture on the bottom, then neatly line with torn lavash pieces.

  8. 8

    Layer and steam: add one-third of the rice, then half the spinach-meatball mixture, then another third of rice, then the remaining spinach-meatballs, finishing with the last third of rice. Drizzle 45 ml water around the edges, cover with a tight lid wrapped in a clean towel, and steam 10 minutes over medium heat.

  9. 9

    Reduce heat to low and continue steaming 45 minutes for fully fluffy rice and a crisp tahdig. Avoid lifting the lid during this time. When done, rest off heat 10 minutes. To serve, loosen edges with a spatula, invert onto a platter, and present the golden bread tahdig separately or on top.

🪪 Recipe Passport

Origin: Persian Cuisine
Researched by: Zaffaron Kitchen
Published: March 15, 2026

Cultural Background

Spinach rice pilafs are part of the broader Persian tradition of layered rice dishes where herbs or vegetables are paired with meat and finished with tahdig. Verjuice is a long-used souring agent in Iranian cooking, valued for a gentle acidity that complements greens and rice.

Regional Variations

Tehran-style home cooking: Often uses smaller, more numerous meatballs and a brighter sour note from verjuice served at the table, with tahdig made from lavash or thin pita.
Northern Iran (Caspian influence): May increase the greens and onion, sometimes adding a touch more sourness and serving with fresh herb sides and pickles common to the region.

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

615
Calories
26g
Protein
24g
Fat
76g
Carbs
5g
Fiber
980mg
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.