An easy-to-follow Fish Curry recipe made with an onion-tomato masala and simple spices. Tender yet crispy fish is nestled in a perfectly spiced, deeply flavorful curry and topped with garnishing ingredients for texture and vibrance. Tested to perfection!

Top view of skillet with Fish Curry garnished with ginger, cilantro and green chili.

Want to save this post?

Enter your email below and get it sent straight to your inbox. Plus, get recipes & tips every week!

Please enable JavaScript in your browser to complete this form.

Fish Curry

I want to preface this post by saying that if you’re here and you don’t care for fish curry, you’re in the right place. You don’t have to like fish curry to like this Fish Curry.

Because while it’s easy to make fish taste great when it’s fried or baked, creating a truly exceptional fish curry is a more difficult task.

I know this because after trying my mom-in-law’s Best Ever Fish Curry, it took me years of trials and tweaking to capture her recipe and get it to a place where I felt happy with it. This one’s for fish lovers and skeptics alike.

More mom-in-law’s recipes: Kadhi Pakora, Maash ki Daal, and Sarson Ka Saag

A bowl of Fish Curry garnished with ginger, green chili and cilantro with naan.

Types of Fish Curry

The Indian subcontinent has a long, sprawling coastal line, resulting in many styles of Bengali, Pakistani, and Indian fish curry.

Because I’m more familiar with the Punjab region, where fish is more often fried or barbecued (as in Fish Tikka), and because fish is largely underrepresented in the restaurant-scene, I must admit I have limited exposure to those variations.

With its onion-tomato masala base and familiar spices, this one is similar to what I grew up with, and has the universal appeal characteristic of Punjabi cuisine.

A bowl of Fish Curry garnished with ginger, green chili and cilantro with a piece of naan.

Fish Masala vs Fish Curry

Masala either refers to spices or the onion-tomato base that’s the canvas for most curries.

Fish Masala makes a thicker, more bold sauce, while Fish Curry conjures up a more soupy image. But really it’s the same thing, and this fish curry can be either depending on your preference.

  • Fish Masala – Keep it sautéed down.
  • Fish Curry – Add extra water and/or yogurt increase the curry. Though this Fish Curry is made without coconut milk, you could always try it for a nice variation.
Partially eaten bowl of fish curry with rice and naan.


There are a few ingredient components to the curry:

Fish Marinade

Ingredients for fish marinade to make Fish Curry.
  • Ground spices: Red chili powder/cayenne and turmeric are all you need to flavor the fish.
  • Carom Seeds (ajwain): Often used in Desi Fish recipes to give depth and floral flavor and mask any “fishy” smell. I didn’t want to make this optional because my mother-in-law always asks for this first when making this dish. But I also don’t want you to go out and buy it just for this recipe considering even I only ever use it for Chapli Kabab or the occasional Pakora.
  • Lemon: A white fish marinade essential. Brightens up flavors and masks any smell.

Types of Fish to Use for Fish Curry

Fish Curries in Pakistan and India are usually made with Pomfret or Rohu, which are specific to that region and not as readily available here.

You can use any type of firm white fish such as:

  • cod (pictured here)
  • tilapia – cheapest & what I used most for testing (less popular in the UK)
  • halibut
  • haddock
  • snapper

Fish Curry Ingredients

Ingredients for  Fish Curry.
  • Neutral oil: I use avocado or grapeseed. Try not to skimp here. You’ll need enough oil to brown the onions and carry the flavor.
  • Yellow onions: I use 2 onions, which may seem like a lot, but they’ll reduce down and really enhance the taste of the masala.
  • Garlic + ginger: Also used liberally. A heavy dose of aromatics is key in this fish curry.
  • Coriander and cumin powder: To build depth and add richness to the curry.
  • Kashmiri chili powder: A mild chili powder used to give curries a red hue and very mild heat. Responsible for the signature color in curries like Butter Chicken or Baingan Bharta. Substitute with Paprika.
  • Red chili powder or cayenne pepper (optional): For a stronger kick, use regular South Asian red chili powder or substitute with an equal amount of cayenne.
  • Kosher salt: Use a tad less if using sea salt/table salt.
  • Tomatoes: Quality tomatoes are key in this curry. I use Roma/plum tomatoes but any will work, as long as they’re ripe and tasty.

Garnish Ingredients

Some lovely finishing touches to add layers of flavor and texture:

Ingredients for garnish for Fish Curry.
  • Thai or bird’s eye green chili peppers: The earlier you add them, the more heat they’ll impart into the curry. Here they’re more for aesthetics than heat.
  • Freshly ground black pepper: Adds a pungent peppery flavor to round out the curry.
  • Julienned ginger: A tip I picked up from Zainab Shah’s Khara Fish Masala; adds a fresh, invigorating zing.
  • Cilantro and lemon juice: To brighten up the otherwise bold curry.

How to make Fish Curry

The full instructions are in the recipe card, but here are some helpful tips.

Tip: I use a food processor to chop everything (onions, garlic, ginger, tomatoes, etc.). Pulse to chop onions so they don’t release too much water.

Marinate Fish

  1. Toss fish with spices: Combine spices & salt and coat the fish as evenly as possible.
Marinated fish in a bowl for making Fish Curry.

Prepare Curry

  1. Brown onions: This is a traditional, slow-burn curry with a proper onion sauté, where the onions turn almost paste-like. The onions must be fried with care here. If darkening too quickly, lower heat and/or deglaze with 1-2 tbsp of water.
  1. Add aromatics & spices: Once the onions are a beautiful golden brown, add the garlic & ginger and sauté until aromatic. Sprinkle in the spices and allow them to bloom in the hot oil, adding a splash of water if they threaten to burn.
  1. Add the tomatoes: Sauté out the moisture from the tomatoes until it forms a cohesive masala. You’ll start to see the oil separate from the curry.
    Here’s something I naturally do but it’s hard to describe in the instructions: Use a wooden spoon to mash the masala to get it more coherent.
    Add water and allow it to simmer while you turn your attention to the fish.

Pan-Fry Fish

  1. Pan-fry fish: An extra step, yes, but much worth it. I have tried adding the fish in directly, but it carries less flavor while releasing moisture in the curry. Plus, the fish pieces are more likely to break and disintegrate into the curry.

Tip to flip fish: Use 2 spatulas, a larger flat/fish spatula to turn the fish, and another smaller spatula that’ll hold it in place during the flip.

Close up of fried fish in a skillet to make Fish Curry.


  1. Add fish to curry: The water will have reduced at this point. Reducing the curry down after adding water enhances flavor while making it more cohesive. Once you’ve reduced, feel free to add as much or as little water as you’d like to increase curry.
Top view of pot with fried fish add to tomato curry to make Fish Curry.
  1. Garnish: This garnish at the end is essential to round out the curry and brighten an otherwise rich dish.
Top view of skillet with Fish Curry garnished with ginger, cilantro and green chili.
Close up of Fish Curry in a pot garnished with ginger and cilantro.


  • My mom-in-law sometimes adds yogurt to the curry, which adds extra tang & makes it runnier.
  • Try frying the fish in mustard oil or sarson ka tel (also used in Achari Chicken). As Sameen Rushdie said in her book Indian Cookery, “Just as North Indians have always known that pure butter ghee is the best cooking medium for a true Qorma or Biryani, in Bengal they understood a long time ago that you cannot improve upon the taste of fish cooked or fried in pure mustard oil.”
  • Note for doubling: A reader commented that doubling the onions made them sweet. To prevent that possibility, if doubling the recipe, try using 1.5x the quantity of onions.
Partially eaten bowl of Fish Curry with naan.

How to Store and Reheat Fish Curry

Fish Curry keeps well for 2-3 days in the fridge in an airtight container.

Usually, I don’t like fish leftovers. (Most of my salmon leftovers are rehashed into the viral salmon bowl.) But this one reheats surprisingly well. You can either microwave or reheat with a bit of water on the stovetop.

A partially eaten bowl of Fish Curry with naan.

Serving Suggestions

This curry goes well with both naan/roti or rice. If I keep it soupy, I tend to want it with rice and Kachumber Salad. Would also go well with Mint Raita.

Top view of a skillet half full with Fish Curry.

Tried this recipe? If you have a minute, please consider leaving a comment telling me how it was! If you’re on Instagram, please tag me so I can see your creations. I truly love hearing from you. Thank you!

Fish Curry in a White Pan ready to be eaten
4.82 (16 ratings)

Fish Curry (Fish Masala)

An easy-to-follow Fish Curry recipe made with an onion-tomato masala and simple spices. Tender yet crispy fish is nestled in a perfectly spiced, deeply flavorful curry and topped with garnishing ingredients for texture and vibrance. Tested to perfection!

Watch the Video


Marinated Fish

  • 1 tsp carom seeds, (ajwain) – optional, highly recommend
  • 1/2 tsp red chili powder or cayenne pepper
  • 1/4 tsp turmeric powder
  • 3/4 tsp kosher salt
  • 1 lb firm-fleshed white fish, such as cod, halibut, or tilapia, patted dry and cut into 2-3" pieces
  • 1 tsp lemon juice

Fish Curry

  • 1/3 cup + 2 tbsp avocado oil, or other neutral oil, divided
  • 2 medium (~380 g) yellow onions, finely chopped
  • 7 garlic cloves, finely chopped
  • 1- inch piece ginger, finely chopped
  • 1 tsp coriander powder
  • 1 tsp cumin powder
  • 1 tsp Kashmiri chili powder, (a mild chili powder, sub paprika)
  • 1/2 tsp red chili powder or cayenne pepper, optional, for extra heat
  • 1/2 tsp turmeric powder
  • 1 1/2 tsp kosher salt
  • 2 ripe (~250 g) tomatoes (I use Roma/plum), finely chopped

To Finish

  • 3-5 Thai or bird's eye green chili peppers, whole or sliced vertically in half
  • 1/4 tsp freshly ground black pepper
  • 1-2 tbsp julienned ginger
  • 3 tbsp cilantro leaves, finely chopped
  • 1-2 tsp lemon juice


  • Nonstick pan to pan-fry fish


  • In a bowl large enough to fit the fish, combine the carom seeds, red chili powder, turmeric, and salt. Toss the fish pieces to coat. Sprinkle in lemon juice and mix again. Set aside.
  • Heat ⅓ cup of the oil in a large pan over medium-high heat. Add the onions and sauté, stirring often, until deeply golden, about 18 minutes. Deglaze the pan with ¼ cup water. Add the garlic and ginger and continue to sauté for another 2 minutes, until fragrant. The onions will have deepened even more in color. Deglaze again with 2 tbsp water. As the water dries up, add the coriander, cumin, Kashmiri chili powder, red chili powder (if using), turmeric, and salt. Give it a few stirs to bloom the spices.
  • Add the tomatoes and sauté until the tomatoes have melded into the masala and oil separates, about 5 minutes.
  • Add 1 cup water and bring the curry to a simmer. Reduce the heat to medium, cover, and allow to simmer while you prepare the fish.
  • Meanwhile, heat a nonstick skillet over medium-high and add the remaining 2 tbsp oil. Move the pan around to coat the bottom in oil. Once the oil is hot, place the fish pieces in the skillet – I can usually get them all in one layer. Pan-fry for 4 minutes per side, until cooked through and golden (the more color, the better). Exact cook time will depend on the thickness of the filet. If you have a meat thermometer, the internal temperature should reach 145℉. Turn off the heat.
  • Uncover the curry and increase the heat to sauté out excess water until you can see the oil separating. Add ¼-½ cup water, depending on how much curry you’d like, and allow it to come to a simmer. Transfer the cooked fish pieces to the simmering curry.
  • Reduce the heat to low. Allow the flavors to meld for 2-3 minutes while you top with green chili peppers, black pepper, julienned ginger, cilantro, and lemon juice. Serve immediately with naan, roti, or other bread.
Calories: 224kcal, Carbohydrates: 9g, Protein: 24g, Fat: 11g, Saturated Fat: 2g, Polyunsaturated Fat: 2g, Monounsaturated Fat: 6g, Cholesterol: 57mg, Sodium: 1372mg, Potassium: 483mg, Fiber: 2g, Sugar: 3g, Vitamin A: 29IU, Vitamin C: 7mg, Calcium: 44mg, Iron: 1mg