Main Course
Fish Curry with Tomato

About this dish
This fish curry with tomato is a beloved coastal Indian classic, where flaky white fish simmers in a tangy, spiced tomato gravy. The tomatoes bring a bright acidity that perfectly balances the earthy cumin, coriander, and turmeric, while green chilies add just the right kick.
Serve it with steamed rice or warm rotis for a comforting, home-style meal that's both healthy and bursting with flavor.
Ingredients
UK and US measurements are both included for every recipe.
white fish fillets
protein600 g
Imperial measurement: 1.3 lb
tomatoes
vegetable3 medium
onion
vegetable1 large
ginger-garlic paste
other1 tablespoon
green chillies
vegetable2
coconut milk
liquid200 ml
Imperial measurement: 3/4 cup
water
liquid120 ml
Imperial measurement: 1/2 cup
vegetable oil
fat2 tablespoons
mustard seeds
spice1 teaspoon
curry leaves
herb10 leaves
ground turmeric
spice1/2 teaspoon
ground coriander
spice1 tablespoon
ground cumin
spice1 teaspoon
red chilli powder
spice1/2 teaspoon
salt
seasoningto taste
fresh cilantro
herb2 tablespoons
Method
Prepare the fish
5 minsRinse the fish fillets and pat them dry with paper towels. Cut into large chunks if the fillets are big. Season lightly with a pinch of salt and set aside.
Temper the spices
2 minsHeat oil in a large skillet or pan over medium heat. Add the mustard seeds and let them splutter for a few seconds. Then add the curry leaves and green chillies, and sauté for 30 seconds until fragrant.
Cook the aromatics
6 minsAdd the finely chopped onions and cook, stirring occasionally, until they turn translucent and lightly golden, about 5 minutes. Add the ginger-garlic paste and cook for another minute until the raw smell disappears.
Make the tomato masala
5 minsStir in the chopped tomatoes, turmeric, coriander powder, cumin, and red chilli powder (if using). Cook the masala for about 5 minutes, until the tomatoes soften and turn mushy, and the oil starts to separate from the sides.
Add the liquids
3 minsPour in the coconut milk and water, and bring the sauce to a gentle simmer. Let it cook, uncovered, for 2-3 minutes to slightly thicken. Season with salt to taste.
Cook the fish
10 minsGently slide the fish pieces into the simmering gravy. Spoon some sauce over the tops. Cover the pan and let the curry cook on low heat for about 7-10 minutes, until the fish is opaque and flakes tenderly; be careful not to stir too much to avoid breaking the fish.
Finish and serve
2 minsOnce the fish is cooked, turn off the heat. Garnish with chopped cilantro. Serve hot with steamed rice or rotis.
Equipment
- Large skillet with lid
- Wooden spoon
- Knife
- Cutting board
Nutrition facts
Tips
- Use a firm white fish like cod, tilapia, or basa so the fillets don't fall apart during cooking.
- For a richer gravy, replace water with an extra splash of coconut milk or add a tablespoon of yogurt at the end (off heat) for a creamy finish.
- To make the curry spicier, increase the green chillies or add a finely chopped serrano pepper with the tomatoes.
- Let the curry rest for 5 minutes before serving - the flavors deepen and the fish absorbs even more of the tangy gravy.
- If fasting or avoiding onion and garlic, you can use a pinch of asafoetida (hing) and extra tomatoes for a no-onion-no-garlic variation.
Serving suggestions
- Serve this fish curry steaming hot with steamed basmati rice, jeera rice, or warm roti/chapatis. A side of cucumber salad or papad (poppadum) adds a nice crunch. The curry also tastes great with plain naan for sopping up every drop.
Rate this recipe
No ratings yet. Be the first to rate it.

Recipe by
Ravi Sharma
Specialises in Indian cuisineRavi is a former IT consultant who now runs a popular YouTube channel called 'Dal-vid'. His tarka technique is flawless.
Describe yourself in three words: Enthusiastic, pun-loving, explains everything twice.