
Creamy Fish Biryani with Coconut
A luxurious stovetop biryani featuring tender fish fillets nestled in fragrant basmati rice infused with coconut milk, turmeric, and warm spices. Layered and steamed to perfection, this dish is aromatic, creamy, and deeply satisfying—a celebration of Indian flavors in one pot.
Steps
Before you start
- Soak basmati rice in cold water for 20 minutes, then drain well
- Pat fish fillets dry with paper towels to remove excess moisture
- Have all spices measured and ready
- Use a heavy-bottomed pot with a tight-fitting lid or cover with foil
Caramelize onions
- Heat 2 tbsp (30 ml) ghee in a heavy-bottomed pot over medium-high heat.
- Add the sliced onions and cook, stirring frequently, for 8–10 minutes until deeply golden brown and caramelized.
- Transfer half the onions to a bowl and set aside for garnish.
- Leave the remaining onions in the pot.
+ Show details− Hide details
Ready when: Onions are deep golden brown, not burnt
Tip: Do not rush this step; caramelized onions provide essential flavor and sweetness to the biryani
Marinate fish with spices
- In a medium bowl, combine the yogurt, ginger-garlic paste, turmeric (1 tsp / 2.5 g), cumin, coriander, salt (1 tsp / 6 g), black pepper, and green chilies.
- Mix well.
- Add the fish fillets and gently coat them on all sides.
- Cover and let sit at room temperature for 10 minutes while you prepare the rice.
+ Show details− Hide details
Ready when: Fish is evenly coated with yogurt mixture
Tip: Keep the fish at room temperature so it cooks evenly throughout the rice
Toast spices and add rice
- In the pot with the caramelized onions still on medium-high heat, add the remaining 1 tbsp (15 ml) ghee, then add the crushed cardamom pods, cinnamon, and cloves.
- Toast for 30 seconds until fragrant.
- Add the drained basmati rice and stir constantly for 2–3 minutes to coat the rice in ghee and warm the spices.
+ Show details− Hide details
Ready when: Rice is warm to the touch and lightly coated with ghee
Tip: Toast the spices first for 30 seconds to bloom their flavors before adding the rice
Add liquid and bring to boil
- Pour in the water and coconut milk.
- Add the bay leaf and bring to a boil over medium-high heat, stirring occasionally.
- The mixture will come to a rolling boil in 3–4 minutes.
+ Show details− Hide details
Ready when: Liquid is at a rolling boil, steam rises vigorously
Tip: Stir occasionally to prevent the rice from sticking to the bottom
Layer fish and herbs
- Once boiling, reduce heat to medium.
- Gently arrange the marinated fish fillets on top of the rice, spacing them evenly so they don't touch.
- Sprinkle the remaining ½ tsp turmeric (1 g) and crushed kasuri methi (if using) over the fish.
- Scatter half the cilantro and half the mint over the fish layer.
+ Show details− Hide details
Ready when: Fish is arranged evenly, herbs are scattered
Tip: Don't stir after adding the fish; any movement risks breaking the delicate fillets
Cover and steam biryani
- Cover the pot tightly with its lid or heavy-duty foil.
- Reduce heat to medium-low and steam for 18–20 minutes without lifting the lid.
- Listen for gentle sizzling around the edges and watch for steam escaping from the sides.
- The rice will absorb all the liquid and become fragrant and tender.
+ Show details− Hide details
Ready when: No visible liquid remains, rice is tender and separate, fish flakes easily when tested with a fork
Tip: Do not lift the lid during cooking; this releases steam and disrupts the cooking process
Rest and finish
- Turn off the heat and let the pot sit covered for 5 minutes to allow the rice to firm up and flavors to settle.
- Carefully remove the lid and gently fluff the rice with a fork, being mindful of the fish pieces.
- Top with the reserved caramelized onions and the remaining cilantro and mint.
+ Show details− Hide details
Ready when: Rice is tender, fluffy, and grains are separate; fish is opaque throughout
Tip: Fluff gently with a fork to avoid crushing the fish; a light hand keeps the biryani beautiful and the fish intact
Good to know
Tips
- Toast the whole spices (cardamom, cinnamon, cloves) briefly in the ghee before adding rice to bloom their essential oils and deepen their flavor
- Use a pot with a tight-fitting lid to trap steam; if your lid is loose, seal the rim with foil before covering to ensure even cooking
- Fresh fish from the fish counter will have better texture than frozen-then-thawed; if using frozen, thaw completely and pat very dry with paper towels
- Serve biryani immediately after plating, while the rice is still warm and aromatic; the aroma is part of the experience
Storage & reheating
Store in an airtight container in the refrigerator for up to 3 days. To reheat, add a splash of water and warm gently over low heat in a covered pot for 8–10 minutes, or microwave in a covered dish with 2 tbsp water for 3–4 minutes, stirring halfway through. The biryani does not freeze well due to the fish; it is best enjoyed fresh or within 1 day.
Substitutions
- firm white fish fillets (cod, halibut, or mahi-mahi) → Prawns or shrimp (21/25 count), patted dry. Reduce steaming time to 12–15 minutes; prawns cook faster and can become rubbery if overcooked
- unsweetened coconut milk → Light coconut milk or half coconut milk and half chicken or vegetable broth. Use the same total volume; the biryani will be lighter and less creamy but still aromatic
- plain whole-milk yogurt → Sour cream or Greek yogurt thinned with 2 tbsp water. Both work well for the marinade; adjust water content as needed to match consistency
- ghee or clarified butter → Unsalted butter or neutral oil (vegetable, canola, or light coconut oil). Ghee provides authentic flavor and higher smoke point; butter will give a milder flavor





