Quick Recipe Version (TL;DR)
Quick Ingredients
- 600 g firm white fish fillets, cut into large chunks
- 1 tsp salt, divided (plus more to taste)
- 1 tsp ground turmeric, divided
- 1 tbsp lime juice (optional)
- 2 tbsp coconut oil or neutral oil
- 1 tsp black mustard seeds
- 10–12 fresh curry leaves
- 1 medium onion, thinly sliced
- 2 medium tomatoes, finely chopped
- 1–2 green chilies, slit (optional)
- 1½ tbsp Kashmiri chili powder
- 1 tsp ground coriander
- ½ tsp ground cumin
- ¼ tsp ground black pepper
- 400 ml can full-fat coconut milk
- 2 tbsp tamarind paste + 120 ml (½ cup) warm water
- 1 tsp jaggery or brown sugar
- Fresh coriander (cilantro) for garnish
- Cooked rice, for serving (about 4 cups)
Do This
- 1. Toss fish with ½ tsp salt, ½ tsp turmeric, and lime juice; set aside 10–15 minutes.
- 2. Mix Kashmiri chili, coriander, cumin, black pepper, and remaining ½ tsp turmeric with 3–4 tbsp water to make a smooth paste.
- 3. Heat oil, crackle mustard seeds, add curry leaves, onion, and green chilies; sauté until golden.
- 4. Stir in spice paste; cook 1–2 minutes, then add tomatoes and cook until soft and jammy.
- 5. Pour in coconut milk, 1 cup water, tamarind water, jaggery, and remaining salt; simmer 5–7 minutes.
- 6. Gently slide in fish, simmer on low 6–8 minutes until just cooked; do not stir vigorously.
- 7. Adjust salt, tamarind, and heat; garnish with coriander and serve hot over steamed rice.
Why You’ll Love This Recipe
- Classic Goan flavors: tangy tamarind, creamy coconut, and gentle heat from Kashmiri chili.
- Uses firm white fish, so it cooks quickly yet stays tender and flaky.
- Simple, home-style method with easy-to-find ingredients and clear steps.
- Perfect make-ahead curry base: you can cook the sauce in advance and add fish right before serving.
Grocery List
- Produce: Firm white fish fillets, onion, tomatoes, green chilies, lime, fresh curry leaves, fresh coriander (cilantro), garlic, ginger.
- Dairy: None (naturally dairy-free; just coconut milk).
- Pantry: Coconut milk, tamarind paste, Kashmiri chili powder, ground coriander, ground cumin, turmeric, black pepper, jaggery or brown sugar, black mustard seeds, coconut oil or neutral oil, rice, salt.
Full Ingredients
For the Fish
- 600 g firm white fish fillets (such as cod, haddock, halibut, tilapia, kingfish, or snapper), skinless and boneless, cut into 4 cm (1½ inch) chunks
- ½ tsp salt
- ½ tsp ground turmeric
- 1 tbsp lime juice (optional, but adds brightness)
For the Curry Base
- 2 tbsp coconut oil (or any neutral vegetable oil)
- 1 tsp black mustard seeds
- 10–12 fresh curry leaves
- 1 medium onion (about 150 g), thinly sliced
- 1–2 green chilies, slit lengthwise (optional, for extra heat)
- 2 medium ripe tomatoes (about 200 g), finely chopped
- 1½ tbsp Kashmiri chili powder (mild, for color; reduce to 1 tbsp for very mild heat)
- 1 tsp ground coriander
- ½ tsp ground cumin
- ¼ tsp ground black pepper
- ½ tsp ground turmeric
- ½ tsp salt (plus more to taste at the end)
- 3–4 tbsp water (to mix with the ground spices into a paste)
Coconut-Tamarind Sauce
- 400 ml can full-fat coconut milk (well shaken)
- 2 tbsp tamarind paste (or 1 tbsp tamarind concentrate), mixed with 120 ml (½ cup) warm water
- 240–360 ml (1–1½ cups) water, to adjust curry thickness
- 1 tsp jaggery or brown sugar (balances the tanginess)
For Serving
- Fresh coriander (cilantro), roughly chopped (about 2–3 tbsp)
- Steamed rice (white basmati or Goan red rice), about 4 cups cooked
- Lime wedges (optional)

Step-by-Step Instructions
Step 1: Marinate the Fish
Place the fish chunks in a medium bowl. Sprinkle with ½ tsp salt and ½ tsp ground turmeric. Add the lime juice, if using. Gently toss so every piece is lightly coated; take care not to break up the fish. Set aside at room temperature for 10–15 minutes while you start the curry base. This short marinade seasons the fish and gives it a lovely golden hue without requiring a long wait.
Step 2: Prepare the Spice Paste and Tamarind
In a small bowl, combine the Kashmiri chili powder, ground coriander, ground cumin, black pepper, and ½ tsp turmeric. Add 3–4 tbsp water and mix into a smooth, loose paste with no dry clumps. This prevents the spices from burning when they hit the hot pan. In another small bowl or measuring jug, stir the tamarind paste into 120 ml (½ cup) warm water until fully dissolved, then set aside; this is your tangy tamarind water for later in the sauce.
Step 3: Temper the Spices and Sauté the Aromatics
Heat a wide, heavy-bottomed saucepan or deep skillet over medium heat. Add the coconut oil. Once hot, sprinkle in the mustard seeds. Let them sizzle and pop for about 30 seconds. Immediately add the curry leaves (they will splutter) and the slit green chilies, if using. Stir for 10–15 seconds until fragrant.
Add the sliced onion and a small pinch of salt. Sauté, stirring often, for 7–8 minutes until the onion turns soft and light golden at the edges. Patience here builds a sweet, savory base. Stir in the chopped tomatoes and cook for another 4–5 minutes, until the tomatoes are soft, pulpy, and the mixture looks thick and jammy.
Step 4: Cook the Spice Paste and Build the Coconut-Tamarind Sauce
Reduce the heat slightly to medium-low. Add the prepared spice paste to the pan. Stir constantly for 1–2 minutes, until the paste thickens slightly, darkens a shade, and smells aromatic; this step cooks out the raw taste of the spices. If it sticks too quickly, splash in a tablespoon of water.
Pour in the coconut milk, followed by 240 ml (1 cup) water. Stir well, scraping the bottom of the pan to release any browned bits. Add the tamarind water and the jaggery. Season with the remaining ½ tsp salt. Bring the curry up to a gentle simmer over medium heat, then lower to medium-low and simmer for 5–7 minutes. The sauce should look smooth, slightly thickened, and a rich orange-red from the Kashmiri chili.
If the curry seems very thick at this stage, add up to 120 ml (½ cup) more water; it should be pourable but not watery.
Step 5: Gently Simmer the Fish in the Curry
Taste the sauce now and adjust for salt and tanginess; remember the fish will absorb some seasoning. Keep the curry at a gentle simmer (small bubbles, not a rolling boil). Carefully slide the marinated fish pieces into the sauce in a single layer, nudging them so they are submerged.
Cook on low heat for 6–8 minutes, uncovered, without stirring vigorously. Instead, gently shake the pan occasionally to move the pieces around without breaking them. The fish is done when it is opaque all the way through and flakes easily with a fork. Avoid overcooking, as fish can become dry and tough quickly.
Step 6: Finish, Rest Briefly, and Serve Over Rice
Once the fish is cooked, turn off the heat. The curry will thicken slightly as it stands. Stir in most of the chopped coriander, reserving some for garnish. Taste one last time: add more tamarind for extra tang, a pinch more jaggery if it is too sharp, or a bit of salt if needed.
Let the curry rest for 3–5 minutes so the flavors meld and the fish relaxes. Meanwhile, fluff your hot steamed rice. To serve, spoon a bed of rice into warm bowls or plates, ladle the Goan coconut fish curry generously over the top, and garnish with the remaining coriander and lime wedges on the side, if you like.
Pro Tips
- Choose the right fish: Firm, meaty fish like cod, haddock, halibut, snapper, kingfish, or tilapia hold up best. Avoid very delicate fish that can fall apart easily.
- Keep the heat gentle for the fish: Once the fish is in, use low heat and minimal stirring. A gentle simmer preserves tender, flaky pieces.
- Balance tanginess and sweetness: Goan curries are pleasantly tangy. Adjust tamarind and jaggery at the end to find your perfect balance.
- Use Kashmiri chili for color, not just heat: It gives the curry a beautiful deep red-orange hue with moderate heat. If you use regular chili powder, reduce the quantity.
- Make the sauce ahead: The curry base (without fish) can be made a day in advance. Reheat gently, then add raw fish and simmer right before serving for best texture.
Variations
- Prawn (shrimp) version: Swap the fish for 500–600 g cleaned prawns. Add them to the gently simmering sauce and cook for only 4–5 minutes, until pink and just cooked through.
- Vegetable coconut curry: Omit the fish and add a mix of blanched potatoes, green beans, cauliflower, and okra. Simmer until tender, adjusting water as needed.
- Extra mild or extra hot: For a milder curry, reduce Kashmiri chili to 1 tbsp and skip fresh chilies. For more heat, add an extra green chili or a pinch of hot red chili powder.
Storage & Make-Ahead
If you have leftovers, cool the curry completely before storing. Refrigerate the fish curry in an airtight container for up to 2 days. Reheat very gently over low heat until just warmed through; avoid vigorous boiling, which can overcook and break the fish. You can also freeze only the curry base (without fish) for up to 2 months; thaw in the fridge overnight, bring to a simmer, then add fresh fish and cook as directed.
Cooked rice will keep in the refrigerator for up to 3 days. Cool it quickly and store in a shallow container. Reheat thoroughly before serving, adding a sprinkle of water and covering to steam.
Nutrition (per serving)
Approximate values per serving (1 of 4, including a modest portion of rice): about 600 kcal; 32 g protein; 34 g fat; 45 g carbohydrates; 4 g fiber; 4 g sugar; 850 mg sodium (will vary based on your salt and exact ingredients). These numbers are estimates and should be used as a general guide only.
