This Indian fish curry brings together tender fish, a fragrant spice base, and a silky, tangy sauce that clings to every bite. It’s the kind of meal that tastes like home cooking: warm, vibrant, and deeply satisfying. You don’t need special skills to make it, just a little patience and good ingredients.
The result is a curry that’s bold without being harsh, comforting without being heavy. Serve it with steamed rice, warm roti, or crusty bread and let the sauce do the talking.
What Makes This Special

This curry uses a classic onion-tomato base—slowly sautéed until sweet and jammy—to build deep flavor. Mustard seeds and curry leaves add a nutty, herbal lift that you’ll recognize from coastal Indian kitchens.
A gentle sour note from tamarind or lemon brightens the richness, balancing the spices and the natural sweetness of the fish. Best of all, the fish cooks in minutes, so you get full, layered flavor without spending all day at the stove.
Shopping List
- Fish: 1.5 pounds firm, boneless white fish (cod, halibut, tilapia, haddock, or mahi-mahi), cut into large chunks
- Marinade: 1/2 teaspoon turmeric powder, 1/2 teaspoon Kashmiri red chili powder (or mild paprika), 1/2 teaspoon salt, 1 teaspoon lemon juice
- Oil: 3 tablespoons neutral oil (mustard, coconut, or vegetable oil)
- Whole spices: 1/2 teaspoon black mustard seeds (optional but recommended), 6–8 fresh curry leaves (optional)
- Aromatics: 1 large onion, finely chopped; 1 tablespoon ginger-garlic paste (or 1 inch ginger + 3 cloves garlic, minced)
- Tomatoes: 2 medium ripe tomatoes, finely chopped (or 1 cup crushed tomatoes)
- Ground spices: 1 teaspoon coriander powder, 1 teaspoon cumin powder, 1/2–1 teaspoon red chili powder (to taste), 1/2 teaspoon turmeric powder, 1/2 teaspoon garam masala
- Tang: 1 tablespoon tamarind paste (or 1–2 tablespoons lemon juice)
- Creaminess (optional): 1/2 cup coconut milk (for a coastal-style finish)
- Fresh herbs: Handful of cilantro, chopped
- Salt and pepper: To taste
- Water or stock: 1–1.5 cups, as needed for sauce consistency
Instructions

- Marinate the fish. Pat the fish dry. Toss with turmeric, Kashmiri chili, salt, and lemon juice.
Set aside for 15–20 minutes while you start the sauce.
- Heat the oil. Use a wide pan so the fish isn’t crowded. Warm the oil over medium heat. When hot, add mustard seeds; let them pop.
Add curry leaves and let them sizzle for 10 seconds.
- Build the aromatics. Add chopped onion with a pinch of salt. Cook, stirring often, until golden and soft, about 8–10 minutes. Add ginger-garlic paste and cook 1–2 minutes until fragrant.
- Add tomatoes. Stir in tomatoes and cook until they break down and the oil starts to separate, 6–8 minutes.
This step is key to a rich base.
- Spice it right. Add coriander, cumin, chili powder, and turmeric. Cook 1 minute, stirring, to bloom the spices.
- Adjust the body of the sauce. Pour in 1 cup water or stock. Simmer 3–4 minutes.
If using coconut milk, add it now for a creamier curry; simmer gently, not hard, to prevent splitting.
- Season and brighten. Add tamarind paste (or lemon juice) and a pinch of salt. Taste—balance should be savory, lightly tangy, and warmly spiced.
- Add the fish. Slide in fish pieces in a single layer. Spoon sauce over the top.
Simmer gently (no vigorous boiling) for 5–8 minutes until the fish flakes easily.
- Finish with warmth. Sprinkle garam masala and half the cilantro. Swirl the pan gently; avoid stirring hard to keep the fish intact.
- Rest and serve. Let the curry sit 5 minutes off heat to settle flavors. Garnish with remaining cilantro.
Serve hot with rice, roti, or naan.
Keeping It Fresh
Storage: Cool leftovers, then refrigerate in an airtight container for up to 2 days. Fish is delicate, so it’s best eaten sooner rather than later.
Reheating: Warm gently on low heat until just hot. Avoid boiling; it can toughen the fish and split the sauce.
Add a splash of water or coconut milk if the sauce thickens in the fridge.
Freezing: The sauce freezes well for up to 2 months, but fish can become mushy after thawing. If meal-prepping, freeze the sauce alone and add fresh fish when reheating.
Health Benefits
- High-quality protein: Fish provides lean protein that’s easy to digest and satisfying without being heavy.
- Omega-3 fats: Fatty fish like mackerel or salmon boost heart and brain health. Even lean white fish offers helpful nutrients with fewer calories.
- Antioxidant spices: Turmeric, coriander, and cumin bring anti-inflammatory and digestive benefits, while garlic and ginger support immune health.
- Balanced meal: Pairing fish with tomatoes, onions, and herbs creates a nutrient-dense dish that’s flavorful and wholesome.
What Not to Do
- Don’t overcook the fish. It goes from tender to dry quickly.
Check for flaking at 5 minutes and pull it as soon as it’s opaque.
- Don’t skip the onion-tomato cookdown. Rushing this step leads to a raw, flat-tasting sauce. Wait for the oil to separate.
- Don’t boil coconut milk hard. It may split and turn grainy. Keep the heat moderate.
- Don’t overcrowd the pan. Fish needs space to cook evenly and avoid breaking apart.
- Don’t oversalt early. The sauce reduces and concentrates.
Season in layers and taste at the end.
Variations You Can Try
- Coastal coconut style: Use coconut oil, add more curry leaves, and finish with extra coconut milk for a mellow, creamy finish.
- Goan-inspired: Add 1 teaspoon ground black pepper, 1/2 teaspoon ground clove-cinnamon mix, and increase tamarind for a bold, tangy edge.
- Tomato-forward: Skip coconut milk and reduce the sauce a bit more for a lighter, sharper profile that pairs well with fluffy rice.
- Green chili kick: Slit two fresh green chilies and simmer them in the sauce for fragrant heat without extra chili powder.
- Different fish: Try salmon for richness, or shrimp for a quick-cook version (shrimp need only 3–4 minutes).
- Dairy-free, all the way: Use oil instead of ghee and rely on coconut milk or just the tomato-onion base.
FAQ
Which fish works best for this curry?
Firm white fish like cod, halibut, haddock, tilapia, or mahi-mahi hold up well. For a richer taste, salmon or mackerel are great, but adjust cook time so the fish stays moist.
Can I make it without tamarind?
Yes. Use lemon juice or a splash of apple cider vinegar.
Start with a little and add more to taste—aim for gentle brightness, not sharp sourness.
How do I make it less spicy?
Use Kashmiri chili powder or mild paprika for color with minimal heat. Skip fresh green chilies and add more coconut milk to soften the spice.
Can I cook the fish separately?
Absolutely. Lightly pan-sear the marinated fish in a little oil, then nestle it into the finished sauce and simmer 2 minutes.
This helps delicate fillets stay intact.
What if I don’t have curry leaves?
Leave them out or add a bay leaf for a different aroma. Curry leaves are unique, so there’s no perfect substitute, but the curry will still taste great.
How thick should the sauce be?
It should coat the back of a spoon—silky, not pasty. If it’s too thick, add water or coconut milk.
If too thin, simmer a few more minutes before adding the fish.
Can I use canned tomatoes?
Yes, crushed tomatoes work well and give consistent flavor. If they taste acidic, balance with a pinch of sugar or an extra splash of coconut milk.
Final Thoughts
Great Indian fish curry is about balance—warm spices, a steady simmer, and a pop of tang to wake everything up. Once you nail the onion-tomato base, the rest is easy and fast.
Keep the heat gentle when the fish goes in, taste as you go, and let the sauce guide your sides. With a bowl of rice and a squeeze of lemon, this dish shines any night of the week.