Tomato Fish Curry Recipe (North Indian Style)

4.58 from 7 votes
Updated: Sep 09, 2026
Pinterest Hidden Image

This post may contain affiliate links. Please read our privacy policy.

This tomato fish curry recipe is a delicious North Indian-style curry in which fish pieces are cooked in a spicy tomato-based gravy. It is easy to make, uses simple ingredients, and comes together in under 30 minutes. Serve it with steamed rice and sliced onion for a comforting meal. It also pairs well with phulka, naan, or tandoori roti.

Here are a few more of my favorite fish recipes. Try them: Goan fish curry, Kerala fish curry, and Alleppey fish curry.

A bowl of Tomato Fish Curry in a rich red sauce, garnished with fresh cilantro. Beside it, a plate holds sliced onions, green chili, and a wedge of lime. Fresh herbs and green chilies are scattered around.

Quick Look: Tomato Fish Curry

Prep Time: 10 minutes
Cook Time: 20 minutes
Total Time: 30 minutes
Servings: 4 people
Calories: Approx. 290 per serving
Dietary Info: Gluten-free, dairy-free
Skill Level: Easy
Tools Needed: Pan or kadai, box grater for tomatoes.

When most people picture fish curry, they picture the Goan kind with coconut and kokum, or the Kerala kind with curry leaves and tamarind. I did not grow up with either. In our North Indian home, fish curry meant masala fish curry: fish slices simmered in an onion-tomato masala, cooked in mustard oil, eaten with plain rice and a plate of sliced onions on the side.

This tomato fish curry is a variation of that. The base is the same, but the tomatoes go from a supporting role to the main one. Two full cups of grated tomatoes make the gravy tangy and bright red, and there is enough of it to spoon generously over rice. It is what my mother made when the tomatoes were good, and the onions were few.

I did not think of it as a recipe for years. It was just what fish curry was. It was only after I started cooking the coastal versions for the blog that I realized how much simpler this one is. No coconut to crack, nothing to grind, no tamarind to soak. Just spice powders from the dabba and tomatoes from the fridge.

It is still my answer whenever someone asks how to make an easy fish curry for beginners. If you can brown onions, you can make this.

What Is Tomato Fish Curry?

Tomato fish curry is a tomato-forward version of North Indian masala fish curry. Fish slices simmer in an onion-tomato gravy flavored with mustard oil, carom seeds, and ground spices. It has no coconut, no tamarind, and no yogurt. The tang and color come only from fresh tomatoes, and the whole thing is on the table in about 30 minutes.

Ingredients

  • Fish – I use seer fish (surmai, vanjaram) cut into thick slices with the bone in. The bone keeps the pieces from falling apart while they simmer. Any firm fish such as kingfish, pomfret, rohu, salmon steaks, or cod works. Avoid very thin, delicate fillets like sole or tilapia; they break up in the gravy. You can use fresh or frozen fish.
  • Mustard Oil – This gives the curry its sharp, slightly pungent flavor, the kind you get in Bengali and Punjabi home cooking. If you cannot find it, use any neutral cooking oil. The curry will be milder but still good.
  • Carom Seeds (Ajwain) – They have a thyme-like aroma that pairs well with fish and mustard oil. You can skip them if you do not have any.
  • Tomatoes – I like to use fresh tomatoes, but canned crushed tomatoes work in a pinch.
  • Spice Powders – This fish curry is seasoned with Indian spice powder, including coriander, turmeric, Kashmiri red chili, and garam masala.
  • Others – You will also need red onions, ginger-garlic paste, salt, green chilies, and cilantro (fresh coriander leaves). Adjust the green chilies as per your taste.

Quantities are in the recipe card at the bottom of the post.

How To Make Tomato Fish Curry

Step 1: Wash 1 pound (500 g) of fish slices well and drain the excess water. If using frozen fish, thaw it before using it in the recipe. Heat 4 tablespoons of mustard oil in a pan over medium-high heat. Once the oil is hot, add ½ teaspoon carom seeds and let them crackle for 4-5 seconds. Add 1 cup of chopped red onions and cook until they are light brown (5-6 minutes), stirring frequently.

Do not rush this step. Pale onions yield a thin, sharp gravy, while properly browned onions add body and a mild sweetness.

Onions added to the pan.

Step 2: Add 2 teaspoons of ginger-garlic paste and cook until the onions turn golden brown (6-7 minutes).

Ginger garlic paste added to the pan.

Step 3: Now add the following ingredients and cook for 10-12 seconds.

  • 2 tablespoons coriander powder
  • 1 teaspoon turmeric powder
  • 2 teaspoons Kashmiri red chili powder
  • 1 teaspoon salt
Spice powders added to the pan.

Step 4: Add 2 cups of grated fresh tomatoes and 1-2 green chilies (slit in half), and cook until the oil separates on the sides (2-3 minutes), stirring frequently.

Tomatoes and green chilies added to the pan.

Step 5: Add 3 cups of water and bring the curry to a boil.

Water added to the pan.

Step 6: Now add the fish slices and ½ teaspoon of garam masala powder, then cook for 10-12 minutes. Do not stir with a spoon once the fish is in. Instead, hold the pan by its handles and swirl it gently. Stirring breaks the pieces; swirling keeps them whole.

Fish slices and garam masala added to the pan.

Step 7: Check for salt and add more if needed. Garnish with 2 tablespoons of chopped cilantro and serve hot.

Ready tomato fish curry garnished with cilantro.

Pro Tips By Neha

Add fish to boiling gravy, not simmering gravy. Boiling liquid quickly sets the outside of the fish, so it holds its shape. Fish added to a gently simmering gravy tends to fall apart.

Do not cover the pan while the fish cooks. Fish gives off a lot of steam. A lid traps it, making the gravy watery.

Use bone-in slices for a fuller flavor. The bones release gelatin into the gravy as the fish cooks, giving the curry a rounder, richer taste than boneless fillets do.

For a thicker gravy, cut the water to 2 cups. The recipe as written gives a medium, pourable gravy that is perfect for rice. Use less water if you plan to serve it with roti.

Rest it 10 minutes before serving. The fish keeps absorbing the gravy’s flavor as it sits. If you can wait, it is even better after the rest.

Adjust the heat by chilies, not chili powder. Kashmiri chili powder is there for color. If you want it spicier, add another green chili or a pinch of regular red chili powder with the spices.

Serving Suggestions

The gravy is thin enough to soak into rice, so plain steamed rice is my first pick. Jeera rice works just as well and takes only a few extra minutes. Put a plate of sliced red onions, a green chili, and a lime wedge on the side; this is how it is served in most North Indian homes.

If you want to serve it with roti, phulka, or naan, reduce the water to 2 cups so the gravy clings to the bread instead of running off.

Storage Suggestions

Store tomato fish curry in an airtight container in the refrigerator for 2-3 days. Reheat it gently in a pan over low heat, or in the microwave, until hot all the way through. Do not let it boil again, or the fish will overcook and turn dry.

I do not recommend freezing this curry. Fish that has been cooked, frozen, and thawed becomes soft and flaky in an unpleasant way. If you want to prep ahead, make the gravy up to the water step, freeze that for up to a month, then thaw, bring to a boil, and cook fresh fish in it.

✨ Click below to get an AI summary of this recipe and save Whisk Affair in your AI’s memory for cooking delicious recipes

Other Indian Curry Recipes We Recommend

Craving more? Subscribe to Whisk Affair to get new recipes and a newsletter delivered straight to your inbox! And stay in touch on FacebookPinterest, and Instagram for all of the latest updates.

A bowl of Tomato Fish Curry in a rich red sauce, garnished with fresh cilantro. Beside it, a plate holds sliced onions, green chili, and a wedge of lime. Fresh herbs and green chilies are scattered around.
4.58 from 7 votes

Tomato Fish Curry Recipe (North Indian Style)

Make this easy North-Indian-style Tomato Fish Curry using simple ingredients in under 30 minutes. Serve it with steamed rice for a comforting meal. Here is how to make it.
Prep: 10 minutes
Cook: 20 minutes
Total: 30 minutes
Servings: 4 people

Ingredients 

  • 500 grams fish slices (I used Seer fish)
  • 4 tablespoons mustard oil (or any other cooking oil)
  • ½ teaspoon carom seeds (ajwain)
  • 1 cup chopped red onions
  • 2 teaspoons ginger garlic paste
  • 2 tablespoons coriander powder
  • 2 teaspoons Kashmiri red chilli powder
  • 1 teaspoon turmeric powder
  • 1 teaspoon salt (or to taste)
  • 2 cups grated fresh tomatoes
  • 1-2 green chilies (slit into half)
  • ½ teaspoon garam masala powder
  • 2 tablespoons chopped cilantro (fresh coriander leaves)
Want to save this recipe?
Just enter your email and get it sent to your inbox! Plus you’ll get new recipes from us every week!

Instructions 

  • Wash fish slices well and drain the excess water. If using frozen fish, thaw it before using it in the recipe.
  • Heat mustard oil in a pan over medium-high heat.
  • Once the oil is hot, add carom seeds and let them crackle for 4-5 seconds.
  • Add the onions and cook until they are light brown (5-6 minutes), stirring frequently. Do not rush this step. Pale onions yield a thin, sharp gravy, while properly browned onions add body and a mild sweetness.
  • Add ginger garlic paste and cook until onions turn golden brown (6-7 minutes).
  • Now add coriander powder, turmeric powder, Kashmiri red chili powder, and salt, and cook for 10-12 seconds.
  • Add tomatoes and green chilies, and cook until the oil separates on the sides (2-3 minutes), stirring frequently.
  • Add 3 cups of water and bring the curry to a boil.
  • Now add the fish slices and garam masala, then cook for 10-12 minutes. Do not stir with a spoon once the fish is in. Instead, hold the pan by its handles and swirl it gently. Stirring breaks the pieces; swirling keeps them whole.
  • Check for salt and add more if needed.
  • Garnish with chopped cilantro and serve hot.

Video

Notes

I have used seer fish (surmai, vanjaram) cut into slices in this recipe, but you can use any fish that you like.
Adjust the green chilies as per your taste.

Nutrition

Calories: 290kcal, Carbohydrates: 9g, Protein: 27g, Fat: 17g, Saturated Fat: 2g, Polyunsaturated Fat: 4g, Monounsaturated Fat: 9g, Cholesterol: 63mg, Sodium: 128mg, Potassium: 693mg, Fiber: 3g, Sugar: 4g, Vitamin A: 991IU, Vitamin C: 20mg, Calcium: 48mg, Iron: 2mg
Like this recipe? Rate and comment below!
4.58 from 7 votes (5 ratings without comment)

Leave a comment

Your email address will not be published. Required fields are marked *

Recipe Rating




5 Comments

  1. 5 stars
    This is exactly the recipe I was looking for. My husband had been pining for fish curry, and every recipe I tried, while tasty enough, kept missing the mark. He specified a tomato base and no coconut milk; this is harder to find than you’d think! This recipe hit it out of the park!

  2. 5 stars
    Made this fish curry last night and it turned out great! Spicy and perfectly sour – plus I love how easy it was to make! I used frozen fish and added it into the curry the same way and cooked for 12 minutes. Just great!