Sri Lankan fish curry that is bursting with delicious flavor! This step by step recipe is very versatile, and can be adapted for other seafoods too. I show you how to make it with coconut milk for a creamy curry sauce, or without coconut milk for a spicier fish curry. The spices can also be adjusted to your taste.
Authentic Sri Lankan Fish Curry that is easy to make, and full of flavor!
Sri Lankan fish curry is legendary. And that’s no surprise, considering Sri Lanka is an island in the heart of the Indian Ocean. I grew up eating a lot of fish, in a lot of different ways. Fried fish was my favorite way I willingly ate fish as a kid, but now as an adult, I’ve come to appreciate the incredibly complex flavors that this simple and aromatic fish curry has to offer! I know you will love this fish curry too! 🙂
What kind of fish curry is this?
There are many different ways to make fish curry. Even in Sri Lanka, there are multiple ways to do so. So here’s what you can expect from this fish curry.
This Sri Lankan fish curry is PACKED with flavor! It is spicy (which can be adjusted to your taste), but also has a lovely sour flavor from tamarind. I make most of my Sri Lankan curries with my own Sri Lankan curry powder, but add other spices to balance the flavor profile.
I also use coconut milk in this recipe. The coconut milk tempers the heat and adds creaminess. But you can just as easily leave out the coconut milk for a spicier curry (mirisata curry).
What type of fish can I use?
A firm fleshed fish is best for this kind of fish curry.
- Sword fish
- Tuna (kelavalla /කෙලවල්ලා)
- Sailfish (thalapath / තලපත්)
You can also use other types of fish like mackerel, for example.
How to prepare the fish for this fish curry
If you’re using firm fish, then you can cut the fish steaks into pieces. Here I used sword fish and cut it into 2 – 3 inch pieces.
If you’re using smaller fish like mackerel, then you can cut the fish into steaks too, with the bone and skin. This will also help hold the shape of the fish as it cooks.
Sprinkle the spices and seasoning over the fish, and mix, and allow the fish to marinate for about 10 – 30 minutes.
How to make the Sri Lankan fish curry
The first step is to prepare the fish and marinate it. This is described above. You can buy fish that is already cleaned and cut from your fishmonger, so that you don’t have to worry about breaking down a big fish.
While the fish is marinating, prepare all the other ingredients.
Slice or dice the onion. Mince the garlic and ginger. Have the spices measured and ready to go as well, so that you’re not scrambling to find the spices while making the curry.
Also bear in mind that all the amounts for the spices are a guide. You can adjust them to your taste. Add less chili if you don’t like it spicy, or add more lemon juice if you want the fish curry to be a little sour.
Saute the onion, curry leaves, garlic, and ginger, until the onion is softened. Add the spices and saute for a few seconds to toast the spices. It should get very aromatic at this point with all the toasted spices!
Add the fish pieces and gently mix to coat the fish in all the spices.
Coconut or water for the curry sauce?
You can choose to simmer the curry in either water or coconut milk. There are a few options,
- Simmer the fish in coconut milk (this is my favorite way, because the coconut milk splits and I love that concentration of the coconut milk).
- Simmer the fish in a little water, and add coconut milk at the end (this keeps the curry creamier, because the coconut milk does not split).
- Only use water to simmer the fish. This will make the curry spicier, and the spices will also be more pronounced.
Once you’ve simmered the fish curry and the fish is cooked through, it is ready to be served and eaten! I do prefer to let the curry sit for about 20 – 30 minutes, just to let all the flavors mingle and develop.
What you’re looking for with this recipe is a fish curry that is bold in spice and curry flavors, with a touch of sourness. The color of the curry will be a reddish brown if you use chili powder, or a dark brown without the chili powder. If you add coconut milk at the end, expect the curry to have a pale / creamy color. You can always adjust the flavors to your liking!
This Sri Lankan fish curry can be served with rice, roti, or string hoppers. Both pol roti (coconut roti), and roti canai will go PERFECTLY with this fish curry!
An accompanying veggie side dish or two will also be fantastic. Here are some flavor-packed options,
- Mushroom curry
- Cashew curry
- Green bean dry curry (one of my favorites to pair with this fish curry!)
- Mango curry
- Pumpkin curry
- Carrot curry
Other variations of this fish curry
Sri Lankans love fish, so we have multiple ways of eating fish. Here are some variations of this curry.
Make a dry curry – Add only a little of the liquid mentioned in the recipe to cook the fish. Then simmer the curry as per the recipe, and add just enough coconut milk to make sure the pot isn’t dry. Once the fish is cooked through, cook off the coconut milk and keep the curry dry (with no curry sauce/gravy).
Deep fry the marinated fish to create a golden brown crust, and add that to the curry. The crisp exterior will be even better in a dry curry, and since the fish is already mostly cooked through, you don’t have to simmer it for too long.
Use either prawns / shrimp or squid to make a seafood version of this curry.
Looking for more recipes?Sign up for my free recipe newsletter to get new recipes in your inbox each week! Find me sharing more inspiration on Pinterest and Instagram.
Sri Lankan Fish Curry Recipe
- 450 – 500 g swordfish or tuna see recipe notes
- 1 tsp sea salt
- ¼ tsp turmeric powder
- 1 tsp Sri Lankan curry powder roasted or unroasted
- ½ tsp ground black pepper reduce the amount if you prefer a non-spicy curry
- ½ tsp cayenne pepper or kashmiri chili powder (if you don’t prefer spicy curries, reduce the amount or skip it altogether)
For the curry
- ½ medium onion sliced or diced
- 2 – 3 cloves garlic minced
- 1 inch piece of ginger minced
- 10 curry leaves
- 2 green chili or jalapeno (split lengthwise)
- ½ tsp turmeric powder
- 2 tsp Sri Lankan curry powder
- ½ tsp ground cardamom
- ½ tsp ground cumin
- ¾ tbsp ground black pepper I prefer freshly ground black pepper
- ¾ tbsp cayenne pepper or kashmiri chili powder
- 1 stick of cinnamon about 3 inches
- 1 tsp tamarind concentrate more if you’re using regular tamarind paste
- 2 cups coconut milk preferably full fat coconut milk
- Salt to taste
Marinating the fish
- Cut the fish into 2 – 3 inch pieces (this doesn’t have to precise).450 – 500 g swordfish or tuna
- Place the fish in a bowl, along with all the other marinade spices. Mix to coat and let the fish marinate for 10 – 20 minutes.1 tsp sea salt, ¼ tsp turmeric powder, 1 tsp Sri Lankan curry powder, ½ tsp ground black pepper, ½ tsp cayenne pepper
- While the fish is marinating, prep and start to cook the curry.
Making the curry
- Heat about 1 – 2 tbsp of oil in a medium to large size pot, over medium heat. Preferably use vegetable oil, canola oil, or coconut oil.
- When the oil has heated, add the onion, and saute until it starts to soften. Then add the garlic and ginger, and saute until the onion has further softened.½ medium onion, 2 – 3 cloves garlic, 1 inch piece of ginger
- Add the curry leaves, green chili, turmeric, curry powder, cardamom, cumin, black pepper, cayenne pepper and cinnamon. Saute for about 30 – 60 seconds until the spices become fragrant, but take care not to let them burn.10 curry leaves, 2 green chili, ½ tsp turmeric powder, 2 tsp Sri Lankan curry powder, ½ tsp ground cardamom, ½ tsp ground cumin, ¾ tbsp ground black pepper, ¾ tbsp cayenne pepper, 1 stick of cinnamon
- Add the fish and tamarind, and gently mix until the fish is coated with all the spices.450 – 500 g swordfish or tuna, 1 tsp tamarind concentrate
- Add the coconut milk and stir it in.2 cups coconut milk
- Bring the curry to a boil over medium high / high heat. Then lower the heat to a gentle simmer, and simmer the curry without the lid for about 20 minutes or until the fish is cooked through.
- Taste and add more salt and/or tamarind to taste.Salt to taste
- Let the curry sit for at least another 10 – 20 minutes if you can, before serving. This allows the flavors to develop further. Leftovers taste even better!
- Serve the fish curry with rice or roti, and other curries or side dishes.
Tips & Tricks
Note about the fishYou can also use tuna (fresh), sail fish, mackerel, or any other firm fleshed fish to make this fish curry.
Note about the curry powderI use homemade Sri Lankan curry powder, but you can also use store-bought Sri Lankan curry powder. Another alternative is Madras curry powder. But avoid using regular curry powders available at the store, since these almost always don’t use the proper spices for a curry powder. Garam masala can also be used, but this will change the curry flavor to a more pronounced Indian curry flavor, which is distinctly different from Sri Lankan curries.
Note about the coconut milkPlease use full fat coconut milk if you can. This gives the best flavor. For a creamier fish curry, add a little water (about ¼ cup) to the fish, and let the fish curry simmer with the lid on. Once the fish is cooked through, add the coconut milk and bring the curry to a boil and simmer for about 1 minute. Then the curry is ready to be served. If you’d like an even spicier curry, simply replace the coconut milk with water. The spices will also be more pronounced in flavor this way.
Notes about the ingredientsIf you don’t have tamarind, you can use lemon or lime juice instead. However, since tamarind is very sour, you can add HALF the amount first, and then add more if you enjoy the sourness. If you don’t like spicy curries, then adjust the black pepper and cayenne pepper amounts to your taste.
“This website provides approximate nutrition information for convenience and as a courtesy only. Nutrition data is gathered primarily from the USDA Food Composition Database, whenever available, or otherwise other online calculators.”
Leave a Review