Soup-e Esfenaj (سوپ اسفناج) — Persian Creamy Spinach Soup
A velvety Persian spinach soup built on a butter-flour roux, simmered with fresh spinach, then finished with milk and cream. Served hot with crispy fried onions, it’s comforting as a starter or light meal.

Printable Recipe Card
Servings: 4 · Total: 70 min · Difficulty: medium
Ingredients (quick list)
- 500 g Fresh spinach leaves (washed well, thick stems removed)
- 200 g Yellow onion (thinly sliced)
- 180 ml Neutral oil (such as sunflower or canola, for frying)
- 6 g Sea salt (divided, plus more to taste)
- 45 g Unsalted butter (cut into pieces)
- 40 g All-purpose flour (about 1/3 cup; spooned and leveled)
- 700 ml Water (hot, to prevent lumps)
- 500 ml Whole milk (warmed)
- 1 g Black pepper (about 1/2 teaspoon, plus more to taste)
- 120 ml Heavy cream (plus extra for serving if desired)
Steps (summary)
- Make the crispy fried onions: separate the onion slices into rings. Heat the oil in a small saucepan to 170°C (340°F). Fry onio…
- Prepare the spinach: bring a large pot of water to a boil, then add the spinach and blanch for 60–90 seconds until wilted and b…
- Build the roux base: in a medium pot over medium heat, melt the butter. Add the flour and whisk constantly for 2–3 minutes unti…
- Whisk in liquids without lumps: reduce heat to low. Slowly whisk in the hot water in a thin stream, fully smoothing the roux as…
- Simmer with spinach: stir in the chopped (or blended) spinach, the remaining 4 g salt, and the black pepper. Simmer gently for…
- Finish with cream and adjust: lower heat to the smallest simmer and stir in the heavy cream. Cook 2–3 minutes—do not boil after…
+ 1 more steps in the full instructions section below.
Cultural Background
Creamy spinach soup is a familiar home-style dish in Iranian cooking, often served as a warming starter or a light meal. The contrast of smooth soup with crispy fried onions reflects a common Persian preference for layered textures and gentle, balanced flavors.
Equipment
💡 Tips
- Warm the milk and use hot water when building the soup base; cold liquids increase the chance of lumps.
- For extra-smooth soup, blend the finished soup for 20–30 seconds with an immersion blender, then rewarm gently.
- Fry onions to a deep golden color; they continue darkening slightly after removal, so pull them just before they look fully done.
- If your spinach is very sandy, soak it in a large bowl of cold water for 5 minutes, lift out (do not pour), then rinse again.
⚠️ Common Mistakes
❌ Adding cold milk or water to the roux all at once
💡 Why: The starch gelatinizes unevenly and forms lumps that are hard to whisk out later
✅ Fix: Use hot water and warmed milk, and whisk them in slowly in a thin stream while keeping heat low at first
❌ Boiling the soup after adding cream
💡 Why: High heat can cause the dairy to separate, making the soup grainy
✅ Fix: Add cream at the end and keep the soup at a very gentle simmer (or just below) for 2–3 minutes
❌ Overcrowding onions while frying
💡 Why: The oil temperature drops, onions steam instead of crisping, and they brown unevenly
✅ Fix: Fry in batches at about 170°C (340°F) and drain well on paper towels; salt immediately
❌ Not draining spinach thoroughly after blanching
💡 Why: Excess water dilutes flavor and can make the soup thin
✅ Fix: Press spinach firmly in a colander or squeeze in a clean towel before chopping or blending
🧊 How to Store
Cool completely, then refrigerate in an airtight container for up to 3 days. Reheat over low heat, stirring often; avoid boiling to prevent the dairy from separating. Store fried onions separately at room temperature (airtight) for up to 2 days to keep them crisp.
📅 Make Ahead
Prepare the fried onions up to 2 days ahead and store airtight at room temperature. The soup base can be cooked 1 day ahead; cool and refrigerate, then reheat gently and stir in the cream just before serving for the smoothest texture.
🍽️ Pairs Well With
- Warm flatbread or crusty bread
- A simple cucumber and tomato salad
- Lemon wedges (optional
- for brightness)
Regional Variations
- Tehran-style home cookingOften blended very smooth and served as a starter with a neat cream swirl and a generous layer of crispy fried onions on top.
- Northern Iran (Caspian-influenced kitchens)Sometimes kept slightly more textured with more greens and a lighter dairy finish, emphasizing the fresh spinach flavor.
Ingredients
- 500 gFresh spinach leaves (washed well, thick stems removed)
- 200 gYellow onion (thinly sliced)
- 180 mlNeutral oil (such as sunflower or canola, for frying)
- 6 gSea salt (divided, plus more to taste)
- 45 gUnsalted butter (cut into pieces)
- 40 gAll-purpose flour (about 1/3 cup; spooned and leveled)
- 700 mlWater (hot, to prevent lumps)
- 500 mlWhole milk (warmed)
- 1 gBlack pepper (about 1/2 teaspoon, plus more to taste)
- 120 mlHeavy cream (plus extra for serving if desired)
🔄 Substitutions
- Whole milk→ 2% milk
- Heavy cream→ Half-and-half
- All-purpose flour→ Gluten-free all-purpose flour blend
Instructions
- 1
Make the crispy fried onions: separate the onion slices into rings. Heat the oil in a small saucepan to 170°C (340°F). Fry onions in 2–3 batches for 8–12 minutes per batch, stirring often, until deep golden. Transfer to a paper towel-lined plate and immediately season with 2 g of the salt.
- 2
Prepare the spinach: bring a large pot of water to a boil, then add the spinach and blanch for 60–90 seconds until wilted and bright green. Drain well and press out excess water. Chop finely, or blend with 120 ml of the measured water for a smoother texture.
- 3
Build the roux base: in a medium pot over medium heat, melt the butter. Add the flour and whisk constantly for 2–3 minutes until the mixture smells nutty and turns pale blond (do not let it brown). This step thickens the soup and removes raw flour taste.
- 4
Whisk in liquids without lumps: reduce heat to low. Slowly whisk in the hot water in a thin stream, fully smoothing the roux as you go, about 2 minutes. Then whisk in the warmed milk. Increase heat to medium and bring to a gentle simmer, stirring frequently, 6–8 minutes.
- 5
Simmer with spinach: stir in the chopped (or blended) spinach, the remaining 4 g salt, and the black pepper. Simmer gently for 10 minutes, stirring every 1–2 minutes to prevent sticking, until the soup is velvety and the spinach flavor mellows.
- 6
Finish with cream and adjust: lower heat to the smallest simmer and stir in the heavy cream. Cook 2–3 minutes—do not boil after adding cream to keep the texture silky. Taste and adjust salt and pepper. If too thick, add 30–60 ml hot water; if too thin, simmer 3–5 minutes.
- 7
Serve: ladle the soup into warm bowls. Top each serving with a generous tablespoon of crispy fried onions and, if desired, a small swirl of extra heavy cream. Serve immediately while the onions are crisp and the soup is hot and smooth.
🪪 Recipe Passport
Cultural Background
Creamy spinach soup is a familiar home-style dish in Iranian cooking, often served as a warming starter or a light meal. The contrast of smooth soup with crispy fried onions reflects a common Persian preference for layered textures and gentle, balanced flavors.
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

Katteh Tond (کته تند) — Spicy Caspian-Style One-Pot Chicken Rice
Persian · Rice Dishes · 85 min

Saffron Sweet Rice (پلو شیرینی زعفرانی) — Festive Persian milk-saffron rice with nuts
Persian · Rice Dishes · 75 min

Ash-e Sak (آش ساک) — Gorgani Spinach and Lamb Ash
Persian · Soups · 175 min

Romanian Tripe Soup (Ciorbă de burtă) — Creamy Sour Beef Tripe Soup
Romanian · Soups · 270 min

Cold Beet Soup (Aukstā zupa) — Latvian Kefir Beet Summer Soup
Latvian · Soups · 45 min

Azerbaijani Milk Rice Porridge (Südlü Sıyıq) — Creamy Breakfast Bowl
Azerbaijani · Rice Dishes · 40 min

Keshkek (Keşkek) — Creamy Ceremonial Wheat and Lamb Stew
Turkish · Stews · 240 min

Orromo (Оромо) — Kyrgyz Steamed Rolled Dumpling with Lamb and Pumpkin
Kyrgyz · Main Courses · 105 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.