Disclosure: This post may contain affiliate links. As an Amazon Associate, we earn from qualifying purchases. We only recommend products we trust.
Doi Maach is the kind of comfort I reach for when I want silky, tangy curry without fuss. It is a classic Bengali fish in yogurt curry, built from firm white fish, whisked full fat yogurt, and a gentle bloom of whole spices like cinnamon, cardamom, cloves, and cumin.
The sauce tastes bright yet mellow, the fish stays tender, and dinner lands on the table with rice before anyone asks what smells so good.
I first craved this after a market morning by the coast, when fresh fillets and a cold cup of yogurt were all I had, plus my little bottle of mustard oil. One careful whisk, low heat, and a handful of warm spices later, Doi Maach became a weeknight habit.
If you want to cook right away, hit Jump to Recipe. Prefer to skim first, use the Table of Contents to hop to ingredients or steps.
Table of Contents
Ingredients for Bengali Doi Maach (Serves 4)

- 1.5 lb firm white fish, cut into 2-inch pieces (rohu or catla if available; otherwise cod, halibut, snapper, or sea bass)
- 1 cup plain full-fat yogurt, whisked until smooth
- 2 tbsp mustard oil (for authentic flavor; or substitute neutral oil plus 1 tsp mustard oil for finishing)
- 1 tsp turmeric powder, divided (ยฝ tsp for marinating, ยฝ tsp for curry base)
- 1 tsp Kashmiri red chili powder (for color and mild heat; can sub with paprika if preferred)
- 1 tsp ground cumin
- ยฝ tsp ground coriander
- 1 tsp sugar (balances yogurt tang)
- 1 tsp salt, plus more to taste
- 1โ2 fresh green chilies, slit lengthwise
- 1 bay leaf
- 1 inch cinnamon stick
- 3 green cardamom pods, lightly crushed
- 3โ4 cloves
- 1 tsp cumin seeds or 1 tsp panch phoron (a Bengali five-spice mix)
- 1 tsp ginger paste
- 1 tsp garlic paste (optional, skip if you prefer no onion/garlic version)
- 2 tbsp warm water, for loosening yogurt if needed
- 1 tsp gram flour (besan) or all-purpose flour (optional stabilizer to prevent yogurt from splitting)
- Fresh cilantro, chopped, for garnish
Step-by-Step Instructions
Step 1: Marinate the Fish
Place the fish pieces in a bowl. Sprinkle with ยฝ teaspoon turmeric and ยฝ teaspoon salt. Rub gently to coat all sides. Let the fish rest for about 15 minutes so the flavors sink in.
Step 2: Whisk the Yogurt
In a separate bowl, whisk the yogurt until silky smooth. If using gram flour or all-purpose flour, stir it in now to help prevent splitting. Add 2 tablespoons of warm water to loosen the yogurt and set aside.
Step 3: Heat the Oil and Bloom Spices
Heat mustard oil in a heavy-bottomed pan until it just begins to smoke. Lower the heat. Add the bay leaf, cinnamon stick, cardamom pods, cloves, and cumin seeds or panch phoron. Let them crackle and release their aroma for 30 seconds.
Step 4: Build the Curry Base
Add ginger paste and garlic paste to the pan. Sautรฉ briefly until fragrant. Stir in the remaining ยฝ teaspoon turmeric, Kashmiri chili powder, ground cumin, and coriander. Splash in a tablespoon of water to keep the spices from burning. Cook for 1โ2 minutes until you smell the roasted spice aroma.
Step 5: Temper in the Yogurt
Reduce the heat to its lowest setting. Pull the pan off the heat for 30 seconds, then slowly whisk in the yogurt mixture, stirring continuously to keep it smooth. Return the pan to low heat and cook for 2โ3 minutes, stirring gently.
Step 6: Add Fish and Simmer
Slide the marinated fish pieces into the curry base. Add the green chilies, sugar, and remaining salt. Simmer on low heat for 8โ10 minutes, spooning sauce over the fish occasionally, until the fish is just cooked through and the sauce is creamy.
Step 7: Rest and Finish
Turn off the heat and let the curry rest for 5 minutes. Taste and adjust seasoning. If you want a stronger aroma, drizzle 1 teaspoon of raw mustard oil on top. Garnish with chopped cilantro before serving.
Doi Maach Recipe
- Total Time: 40 minutes
- Yield: 4 servings 1x
Description
A classic Bengali dish, Doi Maach is a creamy fish curry made with yogurt, mustard oil, and warm spices. Perfect with steamed rice for a comforting meal.
Ingredients
- 1.5 lb firm white fish, cut into 2-inch pieces (rohu, catla, cod, halibut, snapper, or sea bass)
- 1 cup plain full-fat yogurt, whisked until smooth
- 2 tbsp mustard oil (or substitute neutral oil plus 1 tsp mustard oil for finishing)
- 1 tsp turmeric powder, divided
- 1 tsp Kashmiri red chili powder (or paprika)
- 1 tsp ground cumin
- ยฝ tsp ground coriander
- 1 tsp sugar
- 1 tsp salt, plus more to taste
- 1โ2 green chilies, slit
- 1 bay leaf
- 1 inch cinnamon stick
- 3 green cardamom pods, lightly crushed
- 3โ4 cloves
- 1 tsp cumin seeds or 1 tsp panch phoron
- 1 tsp ginger paste
- 1 tsp garlic paste (optional)
- 2 tbsp warm water
- 1 tsp gram flour (besan) or all-purpose flour (optional)
- Fresh cilantro, chopped, for garnish
Instructions
- Marinate fish with ยฝ tsp turmeric and ยฝ tsp salt. Rest for 15 minutes.
- Whisk yogurt until smooth. Mix in flour (if using) and 2 tbsp warm water. Set aside.
- Heat mustard oil until smoking, then reduce heat. Add bay leaf, cinnamon, cardamom, cloves, and cumin seeds. Let them crackle.
- Add ginger and garlic paste. Sautรฉ briefly. Stir in remaining turmeric, chili powder, cumin, and coriander with a splash of water. Cook 1โ2 minutes.
- Lower the heat, remove pan for 30 seconds, then slowly whisk in yogurt mixture. Stir gently until smooth. Return to low heat.
- Slide fish pieces into curry. Add green chilies, sugar, and remaining salt. Simmer gently 8โ10 minutes until fish is cooked and sauce is creamy.
- Turn off heat, rest 5 minutes. Adjust seasoning, drizzle raw mustard oil if desired, and garnish with cilantro.
Notes
Keep heat low when adding yogurt to prevent splitting. Use Kashmiri chili for bright color without too much heat. Serve warm with plain rice or jeera rice.
- Prep Time: 15 minutes
- Cook Time: 25 minutes
- Category: Seafood
- Method: Stovetop
- Cuisine: Indian
Nutrition
- Serving Size: 1 serving
- Calories: 265
- Sugar: 4g
- Sodium: 610mg
- Fat: 14g
- Saturated Fat: 3g
- Unsaturated Fat: 10g
- Trans Fat: 0g
- Carbohydrates: 8g
- Fiber: 1g
- Protein: 28g
- Cholesterol: 72mg
Pro Tips for Perfect Doi Maach
- Keep the heat low when adding yogurt. This is the golden rule to stop the curry from curdling. If youโre unsure, take the pan off the heat for 30 seconds before stirring it in.
- Whisk the yogurt until silky. A few seconds of whisking saves you from lumps in the curry. If the yogurt feels too thick, loosen it with a splash of warm water before adding it to the pan.
- Use mustard oil for authenticity. Heat it until it just smokes, then lower the flame. This removes bitterness but leaves the distinct flavor that makes Bengali curries shine.
- Donโt overcook the fish. The pieces should gently poach in the sauce for just 8โ10 minutes. Any longer, and theyโll fall apart.
- Balance flavors with a pinch of sugar. The sugar doesnโt sweeten the curry, it just rounds out the tanginess of the yogurt.
Did you know? The Bengali five-spice blend panch phoron is made from equal parts cumin, fennel, fenugreek, nigella, and mustard seeds, and itโs the secret behind many of Bengalโs most beloved curries.
Serving Suggestions for Doi Maach
- Classic Pairing: Serve hot Doi Maach with plain steamed basmati rice. The mild rice balances the creamy, tangy curry beautifully.
- For a Feast: Add simple Bengali sides like dal (lentils), a fresh cucumber-onion salad, or even a quick potato fry. Together, they turn dinner into a comforting spread.
- Modern Twist: Try serving Doi Maach with jeera rice (cumin rice) or even a light pulao if you want something more fragrant.
- Garnish for Freshness: A sprinkle of chopped cilantro right before serving brightens up the curry and adds a fresh aroma.
- Occasion Ready: Plate the fish carefully in a shallow bowl, spoon sauce generously over it, and serve family-style at the center of the table for a true Bengali experience.
FAQs about Doi Maach
Can I use a different oil instead of mustard oil?
Yes, you can. While mustard oil gives the most authentic Bengali flavor, a neutral oil like canola or sunflower will work too. For a closer taste, add a teaspoon of mustard oil at the end as a finishing drizzle.
What fish works best outside India?
If you canโt find rohu or catla, firm fish like cod, halibut, sea bass, red snapper, or haddock are great substitutes. Just make sure the fish holds its shape while simmering.
Why does my yogurt split in the curry?
This usually happens if the heat is too high or the yogurt is very sour. Always whisk the yogurt until smooth, lower the heat, and add it gradually. A spoonful of gram flour or all-purpose flour mixed into the yogurt also helps stabilize it.
Can I make Doi Maach without garlic?
Yes, many Bengali homes prepare it without garlic or onion for a lighter, more traditional version. Just keep the spices gentle and let the yogurt shine.
How spicy is Doi Maach Dish?
Doi Maach is usually mild and creamy, but you can adjust the heat. Kashmiri chili powder adds color more than heat, while the green chilies let you dial up the spice level.
Bringing It All Together
Doi Maach is proof that simple ingredients can create something extraordinary. With just fish, yogurt, and a handful of warm spices, you get a curry thatโs both elegant and comforting. Pair it with rice for a true Bengali experience, or dress it up with a few side dishes when you want to impress.
You may also like:
– Traditional Kerala Fish Curry Recipe
– Bhekti Macher Paturi Recipe
– Indian Fish Fry Recipe
– Apollo Fish Recipe
– Chepala Pulusu Recipe
Now itโs your turn to give this classic a try in your kitchen. Iโd love to hear how it turns out, share your thoughts, swaps, or family twists in the comments below.
And most of all, enjoy the cooking journey.
Happy cooking!










