Polow-e Loobia ba Koofteh Rizeh (پلو لوبیا با کوفته ریزه) — Persian Rice with Black-Eyed Peas and Mini Soy Meatballs
Fluffy Persian-style rice layered with tender black-eyed peas and crisp mini soy meatballs, finished with saffron butter. A plant-based comfort dish with warm turmeric and pepper, ideal for family-style serving.

Printable Recipe Card
Servings: 6 · Total: 180 min · Difficulty: medium
Ingredients (quick list)
- 450 g Long-grain Iranian rice (rinsed until water runs mostly clear)
- 18 g Fine sea salt (for soaking and boiling rice; plus more to taste for peas and meatballs)
- 200 g Black-eyed peas (dry) (picked over and rinsed)
- 2400 ml Water (for soaking and cooking (plus more as needed))
- 0.25 tsp Saffron threads (ground and bloomed in hot water)
- 60 ml Hot water (to bloom saffron)
- 45 g Plant-based butter (melted; use a soy-free brand if needed)
- 60 ml Vegetable oil (divided)
- 120 g Plain plant-based yogurt (unsweetened; for yogurt tahdig)
- 30 g Chickpea flour (for binding tahdig and meatballs)
- 250 g Yellow onion (finely grated; squeeze lightly to remove excess liquid)
- 120 g Textured vegetable protein (TVP), fine granules (dry weight)
+ 3 more in the full ingredients section below.
Steps (summary)
- Soak the black-eyed peas in 1200 ml water for 45 minutes at room temperature, then drain and rinse. Meanwhile, soak the rinsed…
- Cook the peas: place soaked peas in a pot with 1200 ml fresh water. Bring to a boil over high heat, skim foam, then reduce to a…
- Hydrate TVP: put TVP in a bowl and pour over 240 ml boiling water. Cover 10 minutes, then fluff and squeeze firmly in a clean t…
- Make the mini soy meatball mixture: combine squeezed TVP, grated onion, 20 g chickpea flour, 1 1/4 tsp turmeric, 1 tsp black pe…
- Shape and fry: roll into 60–70 mini meatballs (about 10–12 g each). Heat 30 ml oil in a wide skillet over medium-high heat (abo…
- Parboil the rice: bring a large pot of water (about 3 liters) to a rolling boil. Drain soaked rice and add it to the pot with t…
+ 3 more steps in the full instructions section below.
Cultural Background
Layered rice dishes with legumes are a familiar home-style format in Iranian cooking, often prepared for everyday meals because grains and beans are filling and economical. Variations are commonly adjusted by season and pantry, and the crisp tahdig is frequently treated as a prized part of the meal.
Equipment
💡 Tips
- Squeeze hydrated TVP very well; excess water prevents browning and makes the meatballs fragile.
- Do not overcook black-eyed peas; they should hold their shape so the rice stays fluffy and layered.
- For a stronger saffron aroma, warm the bloomed saffron over very low heat for 30 seconds before mixing with butter.
- If your pot runs hot, place a heat diffuser under it during the 45-minute low steam to prevent burning the tahdig.
⚠️ Common Mistakes
❌ Boiling the rice until fully tender before steaming
💡 Why: Fully cooked rice breaks during layering and turns sticky, preventing distinct grains and a good tahdig.
✅ Fix: Parboil only until the grain is long but still firm in the center (6–8 minutes), then drain and steam to finish.
❌ Skipping the squeeze after hydrating TVP
💡 Why: Wet TVP steams instead of browning and can make the meatballs fall apart.
✅ Fix: Squeeze TVP firmly in a towel until it feels just damp, then rest the mixture so chickpea flour binds.
❌ Overcrowding the skillet when frying mini meatballs
💡 Why: Crowding drops the pan temperature, leading to pale, oily meatballs.
✅ Fix: Fry in batches with space between pieces; keep heat at medium-high and let the oil reheat 30–60 seconds between batches.
❌ Steaming on high heat for the full cook
💡 Why: High heat can burn the bottom before the rice finishes steaming.
✅ Fix: Use 10 minutes medium-high to build steam, then 45 minutes low (use a diffuser if your stove runs hot).
🧊 How to Store
Cool leftovers within 2 hours. Refrigerate rice and meatballs in airtight containers up to 4 days. Reheat covered with 1–2 tbsp water in a pot on low 10–12 minutes or microwave covered 2–3 minutes. Freeze up to 2 months; thaw overnight in the fridge before reheating.
📅 Make Ahead
Cook black-eyed peas up to 2 days ahead and refrigerate. Mix and shape the mini meatballs up to 24 hours ahead; store covered and fry just before layering, or fry ahead and re-crisp in a 200°C oven for 8–10 minutes. Rice is best steamed the day of serving.
🍽️ Pairs Well With
- Shirazi salad (cucumber
- tomato
- onion with lemon juice)
- Pickled vegetables
- Fresh herbs and radishes
- A wedge of lemon or lime
Regional Variations
- Tehran-style home cookingOften served with a yogurt-based tahdig and a generous saffron finish, keeping the seasoning mild so the aroma of saffron and toasted rice stands out.
- Southern Iran (Gulf-adjacent households)Sometimes seasoned more boldly with extra black pepper and turmeric, and the legumes may be cooked slightly softer to blend into the rice for a more cohesive texture.
Ingredients
- 450 gLong-grain Iranian rice (rinsed until water runs mostly clear)
- 18 gFine sea salt (for soaking and boiling rice; plus more to taste for peas and meatballs)
- 200 gBlack-eyed peas (dry) (picked over and rinsed)
- 2400 mlWater (for soaking and cooking (plus more as needed))
- 0.25 tspSaffron threads (ground and bloomed in hot water)
- 60 mlHot water (to bloom saffron)
- 45 gPlant-based butter (melted; use a soy-free brand if needed)
- 60 mlVegetable oil (divided)
- 120 gPlain plant-based yogurt (unsweetened; for yogurt tahdig)
- 30 gChickpea flour (for binding tahdig and meatballs)
- 250 gYellow onion (finely grated; squeeze lightly to remove excess liquid)
- 120 gTextured vegetable protein (TVP), fine granules (dry weight)
- 240 mlBoiling water (to hydrate TVP)
- 1.5 tspGround black pepper (divided)
- 2 tspGround turmeric (divided)
🔄 Substitutions
- Long-grain Iranian rice→ Basmati rice
- Black-eyed peas (dry)→ Canned black-eyed peas
- Plant-based yogurt→ Thin potato tahdig
Instructions
- 1
Soak the black-eyed peas in 1200 ml water for 45 minutes at room temperature, then drain and rinse. Meanwhile, soak the rinsed rice in enough water to cover by 3 cm, adding 12 g of the salt; rest 45–60 minutes. Bloom saffron by stirring it into 60 ml hot water; cover and set aside.
- 2
Cook the peas: place soaked peas in a pot with 1200 ml fresh water. Bring to a boil over high heat, skim foam, then reduce to a gentle simmer. Cook 25–35 minutes until tender but not mushy. Drain well and cool; season lightly with 3 g salt and 1/4 tsp black pepper so the peas taste savory.
- 3
Hydrate TVP: put TVP in a bowl and pour over 240 ml boiling water. Cover 10 minutes, then fluff and squeeze firmly in a clean towel to remove excess moisture. This step is key for meatballs that brown well. Set aside while you prepare the onion and binding mixture.
- 4
Make the mini soy meatball mixture: combine squeezed TVP, grated onion, 20 g chickpea flour, 1 1/4 tsp turmeric, 1 tsp black pepper, and 3 g salt. Mix 2 minutes until tacky and cohesive; if it feels wet, add 5 g more chickpea flour. Rest 10 minutes so the flour hydrates and binds.
- 5
Shape and fry: roll into 60–70 mini meatballs (about 10–12 g each). Heat 30 ml oil in a wide skillet over medium-high heat (about 190°C surface temperature). Fry in batches 6–8 minutes total, turning often, until deep golden and crisp. Transfer to a rack or paper towel; keep warm.
- 6
Parboil the rice: bring a large pot of water (about 3 liters) to a rolling boil. Drain soaked rice and add it to the pot with the remaining 6 g salt. Boil 6–8 minutes, stirring once or twice, until the grains are long but still firm in the center. Drain in a colander and rinse quickly with 250 ml cool water.
- 7
Prepare yogurt tahdig: in a bowl, mix plant-based yogurt, 10 g chickpea flour, and 15 ml vegetable oil until smooth. Add 1/4 tsp turmeric for color if desired (from the measured turmeric). This creates a sturdy, crisp base. Keep it ready because the pot should be assembled while the rice is warm.
- 8
Layer and steam: heat 45 ml vegetable oil in a nonstick pot over medium heat for 1 minute. Spread the yogurt tahdig mixture over the bottom. Layer 1/3 rice, 1/2 peas, 1/2 meatballs, then repeat, ending with rice. Poke 5–6 steam holes. Cover lid with a towel and steam 10 minutes on medium-high, then 45 minutes on low.
- 9
Saffron finish and serve: melt plant-based butter and mix with the bloomed saffron. Drizzle over the top of the rice, re-cover, and steam 5 minutes on low to perfume. Fluff gently, keeping layers visible. Invert the pot onto a platter to release the tahdig, then serve with extra meatballs on top.
🪪 Recipe Passport
Cultural Background
Layered rice dishes with legumes are a familiar home-style format in Iranian cooking, often prepared for everyday meals because grains and beans are filling and economical. Variations are commonly adjusted by season and pantry, and the crisp tahdig is frequently treated as a prized part of the meal.
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

Persian-Style Pizza-Chips (خوراک چیپس و پنیر) — Street-Food Chip Bake with Chicken and Mozzarella
Persian · Main Courses · 45 min

Yatimcheh (یتیمچه) — Persian Slow-Cooked Summer Vegetable Stew
Persian · Stews · 100 min

Chicken Stuffed Cabbage Rolls (دلمه کلم با مرغ) — Herb-Scented Persian Dolmeh in Tomato Saffron Sauce
Persian · Main Courses · 90 min

Japanese Oyakodon (親子丼) — Chicken and Egg Rice Bowl
Japanese · Rice Dishes · 29 min

Cantonese Chicken Congee (粵式雞粥) — Silky Rice Porridge with Ginger
Chinese · Rice Dishes · 95 min

Chicken Chygyrtma (Toyuq Çığırtması) — Azerbaijani Chicken with Eggs and Tomatoes
Azerbaijani · Main Courses · 65 min

Turkish Cağ Kebab (Cağ Kebabı) — Erzurum Slow-Roasted Charcoal Lamb Skewer
Turkish · Kebabs · 160 min

Jujeh Kabab (جوجه کباب) — Saffron-Turmeric Chicken with Rustic Tomato Sauce
Persian · Kebabs · 45 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.