Pakistani fish curry is a warmly spiced dish of tender fish simmered in an onion, tomato, ginger, and garlic gravy. It is commonly served with rice or roti, and recipes vary by region, household, and the fish available; this version uses an approachable tomato-based masala.
Ingredients
What You’ll Need
- 1½ lb firm fish fillets (680 g), such as cod, haddock, or kingfish, cut into 2-inch (5-cm) pieces. Choose pieces of similar thickness so they cook evenly.
- 3 tbsp neutral oil (45 ml), such as canola or sunflower oil. Mustard oil is used in some regional versions; neutral oil gives a milder flavor.
- 1 medium yellow onion, finely chopped, about 1 cup (150 g).
- 1 tbsp finely chopped fresh ginger (6 g) and 1 tbsp minced garlic (9 g), or use 2 tbsp (30 g) ginger-garlic paste.
- 1–2 green chilies, thinly sliced (about 5–10 g), with seeds removed for less heat.
- 1½ cups chopped ripe tomatoes (270 g), fresh or canned, drained. About 3 medium fresh tomatoes is usually enough.
- 1 tsp ground cumin (2 g), 1 tsp ground coriander (2 g), and ½ tsp ground turmeric (1 g).
- ½ tsp red chili powder (1 g), or less to taste; Kashmiri chili powder gives color with gentler heat. Paprika is a mild substitute, though it changes the flavor.
- 1 tsp fine salt (6 g), then more to taste.
- 1 cup water (240 ml), plus a little more if needed to loosen the gravy.
- ½ tsp garam masala (1 g).
- 1 tbsp fresh lime juice (15 ml) and ½ cup loosely packed chopped cilantro (15 g).
- Optional: 1 tsp dried fenugreek leaves, often sold as kasuri methi (about 0.5 g). If unavailable, omit it; a tiny pinch of ground fenugreek can substitute, but tastes more concentrated and slightly bitter.
Use a wide, heavy-bottomed skillet or shallow pot, a lid, a cutting board reserved for produce, and a food thermometer. A wide pan gives the fish space to sit in one layer and makes it easier to turn down the pieces without breaking them. Keep the fish refrigerated until you are ready to cook, and use clean utensils for cooked food rather than those that touched raw fish.
Step-by-Step
- Prepare the fish and vegetables (20 minutes). Cut the fish into roughly equal pieces and pat them dry with paper towels; do not rinse raw fish, as splashes can spread bacteria around the sink. Check for pin bones and remove any with clean tweezers. Chop the onion, tomatoes, ginger, garlic, chilies, and cilantro, and measure out the spices. Keep the fish chilled while you make the masala. If it is frozen, thaw it safely in the refrigerator before starting and pat it dry once thawed.
- Soften and brown the onion (8 minutes). Warm the oil in the skillet over medium heat. Add the chopped onion and cook, stirring every minute or so, until soft and evenly golden at the edges, about 8 minutes. Adjust the heat if it darkens quickly. A well-softened onion builds body and sweetness into the gravy; a burnt onion can make the finished curry taste bitter.
- Cook the aromatics and spices (9 minutes). Add the ginger, garlic, and sliced chilies. Stir for about 1 minute, just until fragrant. Add the cumin, coriander, turmeric, chili powder, and salt; stir for 30 seconds so the spices coat the onion without scorching. Add the tomatoes and cook for about 7 minutes, stirring and pressing them with the spoon, until they soften and the mixture looks thick and glossy. If it begins sticking before the tomatoes break down, add 1 tablespoon (15 ml) water and lower the heat.
- Simmer the gravy (6 minutes). Pour in 1 cup (240 ml) water and scrape the bottom of the pan to release the browned masala. Bring it to a gentle simmer, then cook uncovered for about 5 minutes. Taste a little of the gravy and adjust the salt or chili. It should be pourable but not watery; it will thin slightly when the fish releases moisture. If you prefer a smoother curry, mash the tomato pieces against the side of the pan rather than blending the hot sauce.
- Add and cook the fish (about 7 minutes). Lower the heat so the gravy simmers gently. Nestle the fish pieces into the sauce in one layer and spoon gravy over the tops. Cover and cook for 4 minutes, then uncover and carefully turn thicker pieces once, using a broad spatula. Continue cooking for about 3 minutes, or until the thickest pieces reach 145°F (63°C) on a food thermometer. The USDA FSIS safe minimum internal temperature for fish is 145°F (63°C); check a large piece at its thickest point, avoiding the pan. If a smaller piece reaches temperature first, lift it out to prevent it from drying out.
- Finish and serve (2 minutes). Turn off the heat. Sprinkle in the garam masala and optional dried fenugreek leaves, then add lime juice and cilantro. Gently tilt the pan or spoon sauce over the fish instead of stirring vigorously. Taste the gravy once more and serve hot with steamed basmati rice, plain rice, or roti. Put rice and bread on the table separately so diners can choose how much sauce to scoop up.
Common Mistakes
Using fragile or uneven fish pieces: Very thin fillets can fall apart before the sauce is ready, while thick chunks may need more time. Choose a firm fish and cut it into pieces of similar thickness. If using delicate fish, leave the pieces larger and handle them as little as possible.
Frying spices too hard: Ground spices burn quickly in hot oil and turn acrid. Add them after the aromatics, stir briefly, and add the tomatoes promptly. If the pan is smoking, take it off the heat for a moment before adding the spices.
Boiling the fish vigorously: A rolling boil knocks pieces against one another and can make them tough. Once the fish goes in, keep the sauce at a gentle simmer and use a spoon to baste rather than stir. Do not rely on a fixed cooking time alone: thickness varies, so check temperature.
Making the gravy too thin or too salty: Measure the water, then simmer the sauce before adding fish so excess liquid can reduce without overcooking the fish. Salt can taste more pronounced as the gravy reduces, so season in stages and taste before the final adjustment.
Tips
Buy fish that smells clean and mild, not strongly fishy, and keep it cold on the way home. Cod, haddock, kingfish, and other firm white fish are easy choices. Salmon can also work, although its richer flavor and higher fat content make the curry taste different. If the fish counter has skin-on fillets, ask for skinless pieces or remove the skin before cutting; loose skin may separate in the sauce.
For a deeper masala, let the onions become properly golden rather than merely translucent, but keep the heat moderate. Ripe fresh tomatoes give a bright, slightly textured sauce; canned chopped tomatoes are convenient and consistent. If your tomatoes are especially tart, simmer the gravy a little longer before adding the fish instead of adding sugar automatically. The onion and tomato balance differs from batch to batch.
Adjust heat with the chilies and chili powder, not by changing the amount of salt. For a gentler family-style curry, use one deseeded green chili and a pinch of chili powder, then offer sliced chilies at the table. For a sharper finish, add a little extra lime at serving. Prepare rice or warm roti while the gravy simmers so the fish can be served promptly when it is done.
Refrigerate leftovers within 2 hours in a shallow, covered container. Cooked fish curry keeps for 3–4 days in the refrigerator. Reheat only the portion you plan to eat, gently on the stove or in a microwave, until the leftovers reach 165°F (74°C); stir the gravy carefully and check temperature in more than one spot. Freezing is also an option, though the fish may become softer after thawing. Thaw frozen leftovers in the refrigerator and reheat safely.
Troubleshooting
The gravy tastes raw or sharply acidic: Give the tomato masala more time over medium-low heat before adding the fish. It should look cohesive and glossy, with no raw-tomato smell. If the fish is already cooked, lift it out first, simmer the sauce for a few minutes, then return the fish briefly to warm through. This keeps the fish from overcooking while the flavor develops.
The curry is too thick: Stir in hot water a tablespoon (15 ml) at a time until it reaches the consistency you like. Simmer for a minute to bring the sauce back together, then check the seasoning. Add water gradually because too much at once can flatten the spices.
The curry is too thin: If the fish is not yet in the pan, simmer the sauce uncovered until it reduces. If the fish is already cooked, remove the pieces gently and reduce the gravy on its own, then return them just long enough to warm. Avoid mashing the fish to thicken the sauce; it creates a coarse texture.
The curry is too spicy: Stir in a little hot water or a few spoonfuls of unsalted tomato to spread out the heat. Serve it with plain rice, which softens the sensation of chili in each bite. Adding cream is not traditional to every Pakistani version and changes the character of the curry, so use it only if you deliberately want a richer variation.
The fish breaks apart or seems dry: It may have been stirred, boiled, or cooked too long. For this batch, serve the broken pieces with plenty of gravy and avoid further simmering. Next time, cut larger pieces, lower the heat before adding fish, and begin checking the thickest piece early with a thermometer. Pieces that reach 145°F (63°C) are ready to come out.
Frequently Asked Questions
Which fish is best for Pakistani fish curry?
Choose a firm fish that holds its shape, such as cod, haddock, kingfish, or another firm white fish. The best choice depends on what is fresh and available. Very thin fillets are more likely to break, so cut them into larger pieces and handle them gently.
Can I use frozen fish?
Yes. Thaw it in the refrigerator, not on the counter, then pat it dry before cooking. Extra surface water can thin the gravy and make the fish harder to handle. Cook to 145°F (63°C) in the thickest part even if the package suggests a different time.
Can I make the curry ahead?
You can prepare the onion-tomato gravy ahead, cool it promptly, and refrigerate it. Reheat the gravy until simmering, then add the fish and cook it fresh to the safe temperature. This gives a better texture than cooking the fish well in advance and reheating it repeatedly.
How can I make this curry less spicy?
Use one green chili with its seeds removed and reduce the chili powder to a pinch or omit it. Cumin, coriander, turmeric, ginger, and garam masala still give the gravy its characteristic savory flavor. Serve extra chili separately for anyone who wants more heat.
What should I serve with fish curry?
Steamed basmati rice is a simple match because it absorbs the tomato gravy. Plain rice and roti are also common choices. Add a fresh salad or sliced cucumber if you want a crisp side, and serve lime wedges for diners who like a brighter finish.
Related
- Cuban Black Bean Soup: What It Is and How It’s Served
- What Is French Stew Called? Ragoût and Classic Dishes
- Vietnamese Stew Seasoning Recipe for Bò Kho at Home
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).