Friday in my father’s house meant one thing: fish curry, and nobody was allowed to be late for it. He would come home from the market with a newspaper-wrapped parcel of rohu steaks, still arguing with the fishmonger in his head about the price, and my mother would start the masala before he’d even washed his hands. The rule of that kitchen was simple — fish goes in last, the spoon stays out, and whoever stirs the pot answers for the pieces that break. This fish curry recipe is that Friday curry, written down properly: firm fish, a bold red masala, and flakes that stay whole until your roti pulls them apart.
My own first attempt broke every rule at once. I used a delicate fillet, dropped it into raw masala, and stirred the pot like it was daal. What came out tasted fine but looked like fish soup — the curry had won and the fish had surrendered. It took me a few Fridays of my own to understand what my parents knew by instinct: the masala must be completely finished before the fish ever touches it, and the fish needs a brief sear so it can hold its shape in the gravy. Once those two habits locked in, this fish curry recipe became the most requested Friday dish in my house too.
Why This Fish Curry Recipe Works
Fish curries fail in predictable ways — the fish disintegrates, the gravy tastes raw, or the whole dish smells more like the sea than supper. This recipe is built to prevent all three:
- The fish is seared for two minutes a side before it meets the gravy. That quick fry sets a delicate golden skin on each piece, and that skin is what holds the flake together while it simmers. Unseared fish dropped straight into masala starts shedding edges within minutes; seared fish stays in proud, whole pieces.
- The masala is fully cooked before the fish goes in. Fish needs barely eight minutes in hot gravy. A raw onion-tomato base needs twenty. Cooking the masala completely first — until the oil separates and the raw smell is gone — means the fish poaches in a finished sauce for exactly as long as it needs, and not one minute longer.
- Ajwain does the quiet, essential work. Carom seeds are the classic fish spice in Punjabi kitchens for good reason: their sharp, thyme-like bite cuts through any hint of fishiness and they have been paired with fish for generations because they help you digest it. Half a teaspoon in the hot oil changes the whole character of the curry.
- The pot is swirled, never stirred. Once the fish is in the gravy, the spoon retires. You move the pot with two hands and a gentle swirl so the masala washes over the pieces instead of a spoon edge sawing through them. It feels like a small thing until you serve unbroken steaks instead of flakes.
- Lemon and salt go on the fish before anything else. A short rest with lemon juice, turmeric, and salt firms the surface of the fish and seasons it all the way through, so the finished curry tastes seasoned in layers rather than salty only on the outside.
Ingredients
Serves 4-5
For the fish:
- 1 1/2 lbs (700g) firm white fish steaks or thick fillets — rohu, cod, halibut, or sea bass — cut into large pieces
- 1 tablespoon lemon juice
- 1 teaspoon turmeric powder (haldi)
- 1 teaspoon red chili powder
- 1 teaspoon salt
- 3 tablespoons oil, for the sear
For the curry:
- 1/3 cup (80 ml) mustard oil or neutral oil
- 1/2 teaspoon ajwain (carom seeds)
- 2 large onions (about 300g), chopped fine
- 3 medium tomatoes (about 350g), pureed until smooth
- 1 tablespoon ginger-garlic paste
- 1/2 cup (120g) plain yogurt, whisked smooth
- 1 1/2 teaspoons ground coriander (dhaniya)
- 1 teaspoon red chili powder
- 1/2 teaspoon turmeric powder
- 1 1/4 teaspoons salt, or to taste
- 1 cup hot water
For the garnish:
- 3-4 green chilies, slit lengthwise
- 1-inch piece of fresh ginger, sliced into fine matchsticks
- 1/4 cup fresh coriander leaves, roughly chopped
- Lemon wedges, for serving
A note on choosing the fish: a proper fish curry wants a firm-fleshed fish that can stand up to a spicy gravy — in Pakistan that’s rohu or singhara from the river markets, and in a US store cod, halibut, or sea bass steaks play the same role. Delicate sole or thin tilapia fillets will flake apart no matter how gentle you are. And do not skip the ajwain: those tiny carom seeds are the signature of a desi fish dish, the flavor that tells you this is not just any curry with fish in it.
How to Make This Fish Curry Recipe – Step by Step
Step 1: Season the fish and let it rest.
Pat the fish pieces completely dry with paper towels — surface moisture is the enemy of a good sear. Rub them all over with the lemon juice, turmeric, red chili powder, and salt, and set aside for 20 to 30 minutes at room temperature. The lemon firms the flesh and takes the edge off any strong fish smell, and the turmeric stains the pieces a beautiful gold that survives the gravy.
Step 2: Sear the fish briefly.
Heat the 3 tablespoons of oil in a karahi or a wide, heavy frying pan over medium-high heat until it shimmers. Lay the fish in a single layer without crowding and sear for about 2 minutes per side, just until a pale golden crust forms. You are not cooking it through — the center should still be raw. Lift the pieces out carefully onto a plate with a wide spatula. This two-minute insurance policy is what keeps this fish curry recipe’s pieces whole at the table.
Step 3: Build the masala.
In a deep pot, heat the mustard oil until it just begins to smoke lightly, then lower the heat and add the ajwain; it will crackle and turn fragrant within seconds. Add the onions and fry for 10 to 12 minutes until deep golden. Stir in the ginger-garlic paste for a minute, then pour in the blended tomatoes with the ground coriander, red chili powder, turmeric, and salt. Cook for 10 to 12 minutes, stirring often, until the masala darkens, thickens, and shows oil glistening at its edges.
Step 4: Finish the gravy with yogurt and water.
Lower the heat right down and whisk the yogurt into the masala a spoonful at a time, stirring constantly so it melts in instead of splitting. Once it is fully absorbed, pour in the cup of hot water, raise the heat, and let the gravy come to a boil. Simmer it for 5 minutes until it looks glossy and unified — slightly thinner than you want the finished dish, because the fish will give back a little moisture of its own.
Step 5: Poach the fish, garnish, and rest.
Bring the gravy down to the gentlest simmer. Slide the seared fish pieces in one by one, spooning a little gravy over each, then stop touching the pot entirely. Cover and poach for 6 to 8 minutes, giving the pot one or two gentle swirls by its handles halfway through. The fish is done when it flakes at the push of a fingertip but still holds its shape. Scatter the green chilies, ginger juliennes, and coriander over the top, rest it off the heat for 5 minutes, and carry the whole pot to the table — this fish curry recipe is always served from the pot it cooked in.
Serving Suggestions
Plain steamed basmati rice is the classic partner — the grains drink up the masala and let the fish stay the star — though a stack of hot rotis for tearing and scooping runs a close second in my house. A sharp kachumber salad of onion, tomato, and lemon alongside cuts the richness, and I always put extra lemon wedges on the table because someone will want a squeeze over their piece.
If your family is split between fried-fish people and curry people, my lahori fried fish settles the argument by putting both on the table — crisp besan-coated fish as the starter, this curry as the main. For a bigger seafood spread, it also sits happily next to a simple lentil dish like my daal mash, whose buttery, whole-grain texture is a calm contrast to all this spice and tang.
Storage and Reheating
Fish curry keeps in the refrigerator for up to 2 days in a covered container — fish dishes genuinely do not improve beyond that, so plan to finish it. Reheat it in a wide pan over the lowest possible heat with the lid on, letting the gravy warm the fish through gently for 6 to 8 minutes; boiling it again will toughen the fish and break the pieces you worked so hard to keep whole. Microwaving is the last resort and tends to make the edges rubbery. I don’t recommend freezing the finished curry once the fish is in the gravy, though the cooked masala base alone freezes beautifully for a month and makes the next batch a fifteen-minute job.
Frequently Asked Questions
What is the best fish for a fish curry recipe?
Firm, thick-cut fish, always. Rohu and singhara are the traditional choices at home; cod, halibut, sea bass, and mahi mahi are the reliable stand-ins in US stores. Whatever you buy, choose steaks or thick fillets at least an inch thick — thin fillets cannot survive simmering, no matter how carefully you handle them.
Why does my fish fall apart in the curry?
Almost always one of three reasons: the fish went in unseared, the gravy boiled instead of simmering, or somebody stirred it. Sear the pieces first, hold the gravy at the barest simmer, and move the pot by swirling instead of using a spoon. In this fish curry recipe the pieces also go in only for the final minutes, which limits their time under stress.
Can I use frozen fish?
Yes, with one discipline: thaw it completely in the refrigerator, then pat it very dry before seasoning. Frozen fish releases a lot of water as it thaws, and if that water is still on the surface, the sear steams instead of crusting. Thawed and dried properly, frozen cod or halibut performs nearly as well as fresh in this dish.
Can I make this curry without yogurt?
You can. Leave the yogurt out and add an extra tomato plus a squeeze of lemon at the end for tang; the gravy will be a little thinner and sharper, more like the coastal style. The yogurt in this fish curry recipe mainly rounds out the tomatoes’ acidity and gives the masala its silky body, so the dish works both ways — it just changes personality slightly.
Recipe Summary
- Prep time: 15 minutes (plus 20-30 minutes resting the fish)
- Cook time: 35 minutes
- Total time: About 50 minutes (plus resting)
- Servings: 4-5
- Cuisine: Pakistani
- Course: Main
