Kufteh-ye Soya (کوفته سویا) — Persian Soy & Vegetable Koofteh in Tomato Broth
A modern Persian-inspired koofteh made with cooked soybeans, vegetables, and egg white, gently simmered in a ginger-scented tomato broth. Light, nourishing, and globally approachable with precise measurements.

Printable Recipe Card
Servings: 4 · Total: 140 min · Difficulty: medium
Ingredients (quick list)
- 200 g Dried soybeans (soaked overnight and cooked until tender)
- 120 ml Whole milk (warm (about 40°C/104°F))
- 200 g Potato (peeled, boiled, and finely mashed (about 1 medium))
- 120 g Carrot (peeled and grated on the fine side)
- 150 g Zucchini (grated, then squeezed very dry (about 1 small))
- 180 g Mushrooms (finely chopped)
- 180 g Onion (grated, then squeezed very dry (about 1 large))
- 12 g Garlic (finely grated (about 3 cloves))
- 66 g Egg whites (from 2 large eggs)
- 35 g Whole wheat flour (plus up to 10 g more if needed for binding)
- 8 g Fine salt
- 1 tsp Ground black pepper
+ 8 more in the full ingredients section below.
Steps (summary)
- Soak the soybeans in plenty of cold water for 12 hours, then drain. Simmer in fresh water for 45–60 minutes until fully tender,…
- Prepare the vegetables for binding: grate the onion and zucchini, then squeeze each in a clean towel until very dry. Finely cho…
- In a food processor, pulse the cooked, drained soybeans 10–12 times to a coarse mince (not a smooth paste). Transfer to a bowl…
- Knead the mixture by hand for 3–4 minutes until cohesive and slightly tacky, like a soft dough. If it feels wet or loose, knead…
- Shape 8 koofteh (about 95–105 g each) with lightly wet hands, packing firmly to remove air pockets. Place on a plate. Meanwhile…
- Stir in tomato paste and cook 2 minutes to deepen flavor. Add crushed tomatoes, stock, salt, pepper, turmeric, and optional sug…
+ 1 more steps in the full instructions section below.
Cultural Background
Koofteh is a long-established Persian family of dishes centered on shaped dumplings or meatballs simmered in sauce, often served for gatherings because it can feed many people. This plant-forward version keeps the familiar technique and comforting broth while using soybeans and vegetables for a lighter profile.
Equipment
💡 Tips
- Steam-drying the cooked soybeans for 10 minutes prevents a watery mixture and helps the koofteh hold their shape.
- Squeezing grated onion and zucchini very dry is essential; if you skip it, the koofteh can crack or dissolve in the broth.
- Keep the simmer gentle—rapid boiling can break delicate plant-based koofteh.
- If you want a smoother texture, pulse half the soybeans a bit finer and keep the rest coarse for bite.
⚠️ Common Mistakes
❌ Boiling the broth vigorously after adding the koofteh
💡 Why: Strong bubbling knocks the koofteh around and can cause cracking or breakage before they set.
✅ Fix: Keep a gentle simmer; if it starts boiling, reduce heat and partially cover the pot to stabilize.
❌ Not squeezing moisture from onion and zucchini
💡 Why: Excess water dilutes binders and makes the mixture too loose to hold together in liquid.
✅ Fix: Squeeze until the pulp feels almost dry; if already mixed, add up to 10 g extra flour and rest 15 minutes.
❌ Pureeing soybeans into a smooth paste
💡 Why: A paste-like base can turn dense and gummy rather than light and tender.
✅ Fix: Pulse to a coarse mince; stop when you see small pieces for structure.
❌ Stirring the pot during the first 20 minutes
💡 Why: The koofteh are fragile until proteins and starches set, so agitation can make them fall apart.
✅ Fix: Do not stir; gently shake the pot or spoon broth over the top if needed.
🧊 How to Store
Cool completely, then refrigerate koofteh in broth in an airtight container for up to 3 days. Reheat covered at a gentle simmer for 8–10 minutes; avoid boiling. Freeze up to 2 months; thaw overnight in the refrigerator before reheating.
📅 Make Ahead
Cook soybeans up to 3 days ahead and refrigerate well-drained. The koofteh mixture can be mixed and shaped up to 12 hours ahead; store covered in the refrigerator, then simmer directly from cold, adding 3–5 minutes to the covered simmer time.
🍽️ Pairs Well With
- Steamed basmati rice
- Whole wheat flatbread
- Cucumber and tomato salad
- Pickled vegetables
Regional Variations
- Northwestern Iran (Azerbaijan region)Koofteh are often made larger and simmered longer, sometimes with a more intensely spiced tomato base; a single large koofteh may be portioned at the table.
- Tehran-style home cookingSmaller, quicker-cooking koofteh are common for weeknights, with a lighter broth and a focus on simple aromatics like onion, turmeric, and tomato.
Ingredients
- 200 gDried soybeans (soaked overnight and cooked until tender)
- 120 mlWhole milk (warm (about 40°C/104°F))
- 200 gPotato (peeled, boiled, and finely mashed (about 1 medium))
- 120 gCarrot (peeled and grated on the fine side)
- 150 gZucchini (grated, then squeezed very dry (about 1 small))
- 180 gMushrooms (finely chopped)
- 180 gOnion (grated, then squeezed very dry (about 1 large))
- 12 gGarlic (finely grated (about 3 cloves))
- 66 gEgg whites (from 2 large eggs)
- 35 gWhole wheat flour (plus up to 10 g more if needed for binding)
- 8 gFine salt
- 1 tspGround black pepper
- 1 tspGround turmeric
- 2 tbspNeutral oil (such as sunflower or grapeseed)
- 10 gFresh ginger (finely grated)
- 30 gTomato paste (about 2 tbsp)
- 400 gCrushed tomatoes (canned or boxed)
- 600 mlVegetable stock (low-sodium preferred)
- 5 gGranulated sugar (optional, to balance acidity)
- 15 mlLemon juice (about 1 tbsp, added at the end)
🔄 Substitutions
- Whole milk→ Unsweetened soy milk
- Egg whites→ Aquafaba (chickpea brine), 60 ml
- Whole wheat flour→ Oat flour
Instructions
- 1
Soak the soybeans in plenty of cold water for 12 hours, then drain. Simmer in fresh water for 45–60 minutes until fully tender, skimming foam as needed. Drain very well, then spread on a tray for 10 minutes to steam-dry; excess moisture can make the koofteh fall apart.
- 2
Prepare the vegetables for binding: grate the onion and zucchini, then squeeze each in a clean towel until very dry. Finely chop mushrooms. Heat 2 tbsp neutral oil in a skillet over medium-high heat; sauté mushrooms 8–10 minutes until their liquid evaporates and they begin to brown. Cool 5 minutes.
- 3
In a food processor, pulse the cooked, drained soybeans 10–12 times to a coarse mince (not a smooth paste). Transfer to a bowl and add warm milk, mashed potato, grated carrot, squeezed onion, squeezed zucchini, sautéed mushrooms, grated garlic, egg whites, whole wheat flour, salt, pepper, and turmeric.
- 4
Knead the mixture by hand for 3–4 minutes until cohesive and slightly tacky, like a soft dough. If it feels wet or loose, knead in up to 10 g additional whole wheat flour. Cover and rest 15 minutes at room temperature so the flour hydrates and the mixture firms for shaping.
- 5
Shape 8 koofteh (about 95–105 g each) with lightly wet hands, packing firmly to remove air pockets. Place on a plate. Meanwhile, start the broth: heat 1 tbsp oil in a wide pot over medium heat, sauté diced onion 6–8 minutes until translucent, then add garlic and ginger for 60 seconds.
- 6
Stir in tomato paste and cook 2 minutes to deepen flavor. Add crushed tomatoes, stock, salt, pepper, turmeric, and optional sugar. Bring to a gentle boil, then reduce to a steady simmer (small bubbles). Carefully lower koofteh into the broth, spacing them so they do not touch.
- 7
Cover and simmer gently for 25 minutes without stirring (shaking the pot is fine). Uncover and continue simmering 10–12 minutes until the koofteh feel firm and the broth slightly thickens. Turn off heat, add lemon juice, and rest 10 minutes before serving so the koofteh set fully.
🪪 Recipe Passport
Cultural Background
Koofteh is a long-established Persian family of dishes centered on shaped dumplings or meatballs simmered in sauce, often served for gatherings because it can feed many people. This plant-forward version keeps the familiar technique and comforting broth while using soybeans and vegetables for a lighter profile.
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.
- Persian-Style Spaghetti with Cheese (اسپاگتی با پنیر) — Buttery thyme-scented comfort pasta
- Pasta-ye Goje Farangi va Kadoo (پاستا گوجه فرنگی و کدو) — Persian-Style Tomato and Pumpkin Pasta
- Espegeti ba Panir (اسپاگتی با پنیر) — Persian-Style Spaghetti with Cheese
- Persian-Style Chicken Omelette (املت مرغ) — Turmeric-Scented Tomato & Herb Omelette
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 Khoresht Saak (خورش ساک) — Saffron-Cardamom Lamb Stew with Saak Greens
Persian · Stews · 145 min

Khoresh Tareh Farangi (خورش تره فرنگی) — Persian Leek and Lamb Stew
Persian · Stews · 130 min

Authentic Kabab Koobideh (کباب کوبیده) — Persian Minced Lamb Skewers
Persian · Kebabs · 40 min

Cuban Ropa Vieja (Ropa Vieja) — Shredded Beef in Tomato-Pepper Sauce
Cuban · Stews · 190 min

Yemeni Saltah (سلتة) — Bubbling Fenugreek Lamb Stew
Yemeni · Stews · 130 min

Bazlama (بازلاما) — Puffy Turkish Village Flatbread Cooked on a Saj
Turkish · Breads · 38 min

Smoky Eggplant Salad (Patlıcan Salatası) — Turkish charred eggplant with garlic and olive oil
Turkish · Salads · 40 min

Uzbek Shurpa (Шўрпа) — Lamb and Vegetable Soup
Uzbek · Soups · 160 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.