Hello, and welcome to my kitchen!
Today, I want to share a recipe that is incredibly special to me. One bite of this dish, and I’m instantly transported back to the sunny, palm-tree-lined beaches of Goa in India. We’re making my absolute favorite Goan Fish Curry. It’s a dish that’s bursting with life and perfectly captures the soul of the region.
Goan food is this amazing mix of Indian flavors and Portuguese history, and this curry is the star of the show.1 So, what makes it so good? It’s all about balance.
You’ve got the creamy, sweet flavor of coconut milk. Then comes the deep, earthy warmth from toasted spices. And the final touch? A tangy kick from tamarind that just makes everything pop. That bright orange-red color isn’t just for looks—it’s a promise of the incredible flavor waiting for you.
This is my personal, go-to version of the classic. I’ve tinkered with it over the years to keep all that authentic taste while making it simple enough for a normal weeknight. No need to spend all day hunting for rare ingredients. It’s a recipe that will make you feel like a rockstar in the kitchen.
So, roll up your sleeves. Let’s make some magic.

Recipe Overview: The Game Plan
Before we start throwing things in a pot, let’s quickly go over the plan. Think of this as our little pre-cooking huddle.
Time Commitment: This whole flavor adventure takes about 35 minutes. You’ll spend around 15 minutes getting everything prepped and ready, and then 20 minutes of actual cooking. Easy peasy.
Servings & Scaling: This recipe makes enough for 4 to 5 people. It’s perfect for a family dinner. I once made a double batch for friends, and it disappeared in minutes. The good news? It’s super easy to scale up or down.
Servings | Key Ingredients (Approx.) | Liquids (Approx.) |
2 people | 300g Fish, 1/2 of paste spices | 200ml Coconut Milk, 1/3 cup water |
4-5 people | 600g Fish, Full recipe | 400ml Coconut Milk, 2/3 cup water |
8-10 people | 1.2kg Fish, Double the paste spices | 800ml Coconut Milk, 1 1/3 cup water |
Difficulty Level: I’d say this is pretty easy. The steps are simple, but the way we layer the flavors makes it taste like you’re a pro. If you’ve made a curry from scratch before, you’ll feel right at home. If not, don’t worry! I’ll be with you every step of the way.
Equipment Needed: You don’t need a fancy kitchen for this. Just a few basics:
- A blender stick (you know, an immersion blender) or a small blender will work for the paste.
- A large, heavy-bottomed pot. The heavy bottom is key—it helps keep things from burning.
- The usual stuff: a knife, cutting board, and measuring spoons.
Make-Ahead & Meal Prep: Looking for a head start? I got you. You can make the curry paste up to 3 days ahead of time. Just keep it in an airtight container in the fridge. Even better, make the whole curry sauce (without the fish!) a day ahead. The flavors actually get deeper and tastier overnight.
The Heart of the Curry: Let’s Talk Ingredients
Great food starts with great ingredients. Let’s break down what we’re using and why it’s so important.
The soul of this dish is the curry paste. We’re using Kashmiri chilli powder for its amazing red color, not just its heat. It gives you that signature look without being crazy spicy. Then we add earthy coriander, warm cumin, and just a little bit of fenugreek powder and ground cloves. For fresh flavor, we’re using a good amount of garlic and fresh ginger.
That classic Goan tang? It comes from tamarind puree. It’s a sour paste from the tamarind fruit, and it’s a non-negotiable for this recipe. You can find it in most big supermarkets or Asian grocery stores.
For the curry itself, we start by “blooming” black mustard seeds in oil. This just means we heat them until they pop. It’s like waking them up! It’s my favorite part. The sound and smell mean you’re on the right track. We’ll also sauté some onion until it’s sweet and add tomato paste and tomato pulp (passata works great) to give the sauce a rich body. And please, use full-fat coconut milk. The light stuff just won’t give you that creamy, luxurious texture we’re after.

Finally, the star: the fish. You’ll need about 600g of a firm white fish.
- Cod
- Halibut
- Mahi-mahi
- Snapper
The key is to pick a fish that will hold its shape and not fall apart. Think of it like a dance partner—you need one that won’t flake out on you. Cut it into nice, big chunks, about 1.25 inches.

Let’s Cook! Your Step-by-Step Guide
Alright, let’s get to the fun part. Follow along, and I’ll tell you what to look for.
Step 1: Create the Magic Curry Paste
First, we build our flavor engine. Grab all your paste ingredients: the chilli powder, coriander, cumin, turmeric, fenugreek, cloves, garlic, ginger, tamarind, chopped onion, and water.
Put them all in a tall jug. Grab your blender stick and blitz it on high for about 10 seconds. You want a smooth, thick, deep-red paste. It should look a bit like ketchup. If it’s too thick, just add another splash of water. The smell should already be incredible—spicy, tangy, and so fragrant. This is your foundation of flavor!

Step 2: Build the Curry Base
Heat the oil in your pot over medium heat. Drop in one mustard seed. If it sizzles, the oil is ready. Add the rest of the mustard seeds. Listen closely! They’ll sizzle and pop for about 30 seconds. This step is called “tempering,” and it’s how we get all that nutty flavor out of the seeds and into the oil.
Next, add the sliced onion. Cook it for about 3 minutes, stirring now and then. You want it soft, sweet, and just starting to get golden on the edges.
Now, turn the heat down a bit and add your beautiful curry paste. Cook it for 3 minutes, and don’t stop stirring. This is a super important step! You’re cooking out the raw taste of the garlic and ginger and waking up the spices. The paste will get a little darker, and your kitchen will smell amazing.
Turn the heat back up to medium-high and stir in the tomato paste and pulp. Cook for another 2 minutes. This makes the tomato flavor really deep and rich.
Step 3: Simmer and Marry the Flavors
Time to turn that paste into a curry. Pour in the water and the creamy coconut milk. Add the salt, sugar, and extra chilli powder if you’re feeling brave. Stir it all together until you have a beautiful, uniform orange-red sauce.
Bring it to a gentle simmer. You want to see small, lazy bubbles. A raging boil is a no-no; it can make the coconut milk separate. Let it simmer gently for 2 minutes.
Now add your fresh tomato chunks and the green chillies. Give it a gentle stir and let it simmer for another 3 minutes. The sauce will get a little thicker. It’s ready for the fish.

Step 4: The Final Act – Cooking the Fish
Gently slide the fish cubes into the simmering curry. Nudge them under the sauce so every piece is covered.
Okay, listen up. This is my most important tip: be gentle. No vigorous stirring from here on out. The fish is delicate. We want lovely chunks, not fish flakes. Let it cook for just 3 to 4 minutes. The fish is done when it’s no longer translucent and flakes easily if you poke it with a fork.
That’s it! You did it. Take the pot off the heat and transfer your masterpiece to a serving bowl.
Variations & Customization: Make It Your Own
One of the best things about this recipe is you can easily tweak it. Here are a few ideas:
- Spice Level: This curry has a medium heat. For a milder version, skip the extra chilli powder and make sure to take the seeds out of your green chillies. Want more fire? Leave the seeds in, or add a pinch of cayenne to the paste.
- Vegan/Vegetarian: This curry base is amazing with other things! Swap the fish for firm tofu (press it first!), a can of chickpeas, cauliflower, or cubed sweet potatoes. Just remember to adjust the cooking time. Veggies will need longer to cook, while tofu just needs to be heated through.
- Gluten-Free: Good news! This recipe is already gluten-free. Just double-check your spices if you have a serious allergy.
Serving & Storage: Enjoying Your Creation
Presentation is half the fun! Ladle the curry into wide, shallow bowls to show off those beautiful pieces of fish. Sprinkle a generous amount of fresh cilantro over the top.
The absolute best way to serve this is with a big pile of fluffy basmati rice. It’s perfect for soaking up every last drop of that sauce.

Storage: Leftovers are a gift. Seriously, this curry is often even better the next day. Store it in an airtight container in the fridge for up to 3 days.
Reheating: Please be gentle. Reheat it slowly in a saucepan over low heat. Avoid the microwave if you can—it can make the fish tough and the sauce grainy.
Freezing: You can freeze the finished curry, but coconut milk can be a little funny when it thaws. My advice? Freeze the curry base before you add the fish and fresh tomato. It will last for months. When you’re ready, just thaw the base, bring it to a simmer, and add the fish for a super fast, fresh-tasting meal.
I really hope you love making—and eating—this Goan Fish Curry as much as I do. Happy cooking!
PrintGoan Fish Curry
Whip up this vibrant and creamy Goan Fish Curry in just over 30 minutes! It’s a taste of the Indian coast right in your own kitchen—perfectly balanced with tangy tamarind, warm spices, and rich coconut milk. This is an easy curry that tastes like it took all day to make.
- Prep Time: 15 minutes
- Cook Time: 20 minutes
- Total Time: 35 minutes
- Yield: 4–5 people 1x
- Category: Main Course
- Cuisine: Indian, Goan
Ingredients
For the Curry Paste:
- 1.5 tbsp Kashmiri chilli powder
- 1.5 tbsp ground coriander
- 1 tsp ground cumin
- 1 tsp turmeric powder
- 1/4 tsp fenugreek powder
- 1/4 tsp ground cloves
- 4 cloves garlic, minced
- 2.5 cm (1″) piece of ginger, grated
- 1.5 tbsp tamarind puree
- 1/2 red onion, roughly chopped
- 2 tbsp water
For the Curry:
- 2 tbsp vegetable oil
- 1 tsp black mustard seeds
- 1/2 red onion, thinly sliced
- 1 tbsp tomato paste
- 2/3 cup (150g) tomato pulp or passata
- 2/3 cup (160ml) water
- 1 can (400ml) full-fat coconut milk
- 1 tsp salt
- 1/2 tsp sugar
- 1/2 tsp Kashmiri chilli powder (optional, for extra heat)
- 1 fresh tomato, cut into chunks
- 2 long green chillies, halved lengthwise
- 600g firm white fish (like cod, halibut, or snapper), cut into 3cm (1.25″) cubes
Instructions
- Make the Paste: Combine all the curry paste ingredients in a small blender or a jug with an immersion blender. Blitz on high until you have a smooth, thick, deep-red paste. Add another splash of water if needed to help it blend.
- Build the Base: Heat the oil in a large pot over medium heat. Add the mustard seeds and wait for them to sizzle and pop (about 30 seconds). Add the sliced onion and sauté for 3 minutes until softened and golden.
- Cook the Spices: Turn the heat down and stir in your curry paste. Cook for 3 minutes, stirring constantly, until it darkens and smells incredibly fragrant. Stir in the tomato paste and tomato pulp, and cook for another 2 minutes.
- Simmer the Sauce: Pour in the water and coconut milk. Add the salt, sugar, and optional extra chilli powder. Stir well and bring to a gentle simmer (don’t let it boil rapidly). Add the fresh tomato chunks and green chillies, and let it simmer for 3 more minutes to thicken slightly.
- Cook the Fish: Gently place the fish cubes into the simmering sauce, nudging them so they’re submerged. Cook for just 3-4 minutes until the fish is opaque and flakes easily. Be careful not to over-stir, as the fish is delicate! Serve immediately.
Notes
- Serving Suggestions: This curry is amazing served over fluffy basmati rice to soak up every drop of the delicious sauce. Garnish with a big handful of fresh cilantro.
- Tips & Tricks: For the creamiest curry, you must use full-fat coconut milk—the light version won’t be the same! Your choice of a firm white fish is key; it ensures the pieces hold their shape beautifully.
- Storage & Reheating: Leftovers are fantastic! Store in an airtight container in the fridge for up to 3 days. To reheat, warm it gently in a saucepan over low heat. Avoid the microwave, as it can make the fish rubbery.