Sri Lankan Fish Curry with Coconut Milk and Tamarind

Updated November 4, 2026

Total time
45 min
prep 20 min · cook 25 min
Serves
4
portions as written
Safe temperature (USDA)
145°F / 63°C
check the thickest piece

Jump to recipe

Sri Lankan Fish Curry with Coconut Milk and Tamarind

Sri Lankan fish curry is a gently simmered dish of fish, spices and a tangy, aromatic sauce; this version uses coconut milk to round out tamarind and warm curry spices. Curry leaves add a distinctive fragrance, while the fish cooks directly in the sauce for a weeknight-friendly meal. Recipes vary across Sri Lanka and from household to household, so adjust the heat and sourness to suit your table.

Ingredients

  • 1 1/2 lb firm white fish fillets, skin removed if preferred (680 g), such as cod, haddock, pollock or halibut
  • 1 tbsp neutral oil (15 ml), such as canola or vegetable oil
  • 1/2 tsp black mustard seeds (2 g)
  • 10 fresh curry leaves (about 2 g), or 1/2 tsp dried curry leaves (about 0.5 g)
  • 1 medium yellow onion, thinly sliced (about 1 cup or 150 g)
  • 3 garlic cloves, finely chopped (about 15 g)
  • 1 tbsp finely grated fresh ginger (about 6 g)
  • 1 tbsp Sri Lankan roasted curry powder (about 6 g)
  • 1/2 tsp ground turmeric (1.5 g)
  • 1/4 tsp cayenne pepper (about 0.5 g), or more to taste
  • 1 medium ripe tomato, chopped (about 1 cup or 150 g)
  • 1 tbsp tamarind paste (15 ml)
  • 1 can full-fat coconut milk (13.5 oz or 400 ml)
  • 1/2 cup water (120 ml), plus a little more if needed
  • 1 tsp fine salt (6 g), divided, plus more to taste
  • 1/4 tsp freshly ground black pepper (about 0.5 g)
  • 1 tbsp fresh lime juice (15 ml), plus lime wedges for serving
  • 1 small pandan leaf, tied in a knot (about 10 g), optional

Instructions

  1. Prepare the fish and aromatics. Pat the fish dry and cut it into 2-inch (5 cm) pieces. Season with about 1/2 tsp of the salt and the black pepper. Slice the onion, chop the garlic and tomato, and measure the spices and liquids before you start cooking. Keeping the fish pieces fairly even helps them cook at roughly the same rate; very thin tail pieces can be added a minute or two later than thicker pieces.
  2. Bloom the mustard seeds and curry leaves. Heat the oil in a wide, lidded sauté pan or shallow Dutch oven over medium heat. Add the mustard seeds and cook for about 30 seconds, until they begin to pop. Add the curry leaves and optional pandan leaf carefully, since any moisture on the leaves may make the oil spit. Stir for another 30 seconds, just until fragrant. If the seeds start to darken rapidly, lower the heat.
  3. Soften the onion and add the spices. Add the sliced onion and cook for 5 minutes, stirring occasionally, until softened and translucent but not deeply browned. Stir in the garlic and ginger and cook for 1 minute. Add the curry powder, turmeric and cayenne; stir for about 30 seconds so the spices become aromatic. Keep the pan moving and reduce the heat if the spice mixture looks dry or begins to stick.
  4. Build the sauce. Stir in the chopped tomato and cook for 3 minutes, pressing it gently with the spoon as it softens. Mix the tamarind paste with a spoonful of the water, then add it to the pan with the coconut milk, remaining water and remaining salt. Stir well, scraping up any flavorful bits from the bottom. Bring the sauce just to a gentle simmer, not a hard boil, then cook uncovered for 7 minutes so it thickens slightly and the flavors come together.
  5. Poach the fish in the curry. Lower the heat so the sauce is barely bubbling. Nestle the fish pieces into the sauce in a single layer as much as possible, spoon a little sauce over them, and cover the pan. Cook gently for about 7 minutes, turning the pieces once only if needed. Check a thick piece with a food thermometer; the USDA FSIS safe minimum internal temperature for fish is 145°F (63°C). If it has not reached that temperature, continue cooking briefly and check again. Avoid a rolling boil or repeated stirring, which can break the fish apart.
  6. Finish and adjust. Remove the pandan leaf if used. Stir in the lime juice, then taste the sauce. Add a little more salt for balance, a splash of water if it is thicker than you like, or another small squeeze of lime if it needs more brightness. Serve while hot, with the fish kept in generous pieces and plenty of sauce spooned over each portion.

Tips

  • Choose fish that holds together. Cod, haddock, pollock, halibut and other firm white fish work well. If using a delicate fish, cut larger pieces and turn them as little as possible. Thaw frozen fillets in the refrigerator before cooking and pat them dry so excess water does not thin the curry.
  • Know your curry powder. Sri Lankan roasted curry powder gives the sauce a deeper, toasted flavor. If it is hard to find, use Madras curry powder; the result may taste sharper or hotter, so begin with 2 tsp (about 4 g) and add more to taste. Curry powders vary, and cayenne is easier to control separately.
  • Balance tamarind gradually. Tamarind pastes differ in strength and saltiness. If yours is a concentrated product, start with 2 tsp (10 ml), taste after the sauce simmers, and add more if needed. If you cannot find tamarind paste, use 1 tbsp (15 ml) lime juice in the sauce; it gives a fresher, less rounded sourness, so add it near the end rather than simmering it for the full time.
  • Keep the sauce gentle. Coconut milk can look slightly separated if boiled hard, and fish can flake apart if stirred vigorously. A low simmer is enough. Fresh curry leaves are especially fragrant, but dried leaves are a reasonable substitute; the finished curry will have a softer, less vivid leaf aroma.

Serving Suggestions

Serve the curry hot with steamed white rice, red rice or another plain rice that can take up the coconut-tamarind sauce. String hoppers or soft flatbread also make useful accompaniments, though availability varies by location. Keep any side dish simply seasoned so it does not compete with the curry’s sour, aromatic sauce.

For a fuller meal, add a vegetable side such as sautéed greens, green beans, cabbage or a simple cucumber salad. A small dish of sliced onion, lime wedges or fresh chili lets people adjust their own plates. Put the fish on top of the rice and ladle sauce around it rather than stirring everything together; that helps preserve the pieces and makes it easier to portion the fish evenly.

Variations

Make it hotter or milder: Omit the cayenne for a gentler curry, or add more in small pinches. For heat with a fresher, more direct chili flavor, add a sliced green chili with the onion. The heat of fresh chilies varies, so taste the sauce before adding another.

Use a different souring ingredient: If you have dried goraka, a traditional souring ingredient used in some Sri Lankan fish curries, add one small piece (about 5 g) while the sauce simmers, following any package directions for soaking or rinsing. It gives a distinct, deeper sourness. Tamarind is more accessible and works well here; lime is brighter and should be stirred in at the finish.

Change the fish or make a thinner curry: Boneless salmon can be used, though its richer flavor changes the character of the dish. For a looser sauce, add water 1 tbsp (15 ml) at a time. Prawns can be substituted, but they cook faster than these fish pieces; simmer them only until opaque and cooked through, checking carefully to avoid a rubbery texture.

Storage and Reheating

Cool leftovers promptly and refrigerate them within 2 hours of cooking in a covered, shallow container. The curry keeps for 3–4 days in the refrigerator. For best texture, avoid storing the fish submerged in a large amount of extra sauce, but do keep enough sauce with each portion to prevent it drying out. The coconut sauce may look separated when cold; that is normal.

Reheat only the portion you plan to eat, either in a small covered pan over low heat or in the microwave in short intervals. Stir the sauce gently and turn the fish carefully rather than breaking it up. Heat leftovers to 165°F (74°C), as measured with a food thermometer. If the sauce thickens in the refrigerator, loosen it with a tablespoon or two of water. Do not repeatedly cool and reheat the same batch.

To freeze, transfer cooled curry to a freezer-safe container and freeze for up to 2 months for the best quality. Thaw overnight in the refrigerator, then reheat to 165°F (74°C). The fish may be softer after freezing and thawing, but the curry remains suitable to eat when handled and reheated safely.

Frequently Asked Questions

Can I make Sri Lankan fish curry without coconut milk?

Yes. Use 1 1/2 cups (360 ml) water or light fish stock instead, and simmer the sauce until it tastes balanced. It will be thinner and less creamy, with the tamarind and spices more prominent. Taste before adding extra salt, especially if you use stock.

Which fish is best for this curry?

Choose a firm, mild fish that can be cut into generous chunks, such as cod, haddock, pollock or halibut. Fresh or properly thawed frozen fish both work. Very thin fillets can overcook while the sauce simmers, so add them later or cut them into larger pieces.

Can I make the curry ahead?

You can prepare the sauce through the simmering step up to a day ahead, refrigerate it promptly, and add the fish when you reheat the sauce for serving. Cooked fish is more likely to break up during reheating, so making the sauce ahead and poaching the fish at the last moment gives the neatest portions.

Why is my curry too sour?

Tamarind strength varies, and some pastes are much more concentrated than others. Stir in a little extra coconut milk or water, then taste again; a small pinch of salt can also help balance the flavor. Next time, begin with less paste and add more after the sauce has simmered.

Can I use dried curry leaves instead of fresh?

Yes. Use about 1/2 tsp (0.5 g) dried leaves in place of the fresh leaves. They give a subtler aroma, so the curry will not have quite the same fresh, citrusy fragrance. If dried leaves are unavailable too, leave them out rather than substituting an unrelated herb.

How do I keep the fish from falling apart?

Cut the fillets into even, roughly 2-inch (5 cm) pieces, lower them into sauce that is barely simmering, and avoid stirring once they are in the pan. Use a wide pan so the pieces fit without stacking. Check the thickest piece for 145°F (63°C) and remove the pan from the heat as soon as the fish reaches the safe minimum temperature.

Related

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).