Sri Lankan Food Mains
Maalu Hodhi – Sri Lankan Fish Curry Recipe
Rich, aromatic Sri Lankan fish curry with coconut milk and lime.
Serves
4
Calories
328 kcal
Cuisine
Sri Lankan

On this page: What is it · History · What you need · Step by step · Serving & storage · Recipe card
Sri Lankan fish curry is rich, aromatic, and packed with bold layers of spice balanced by creamy coconut milk and fresh lime. It is one of the most comforting and recognizable dishes found across Sri Lankan coastal cooking, where fresh seafood and fragrant spice blends are part of everyday life.
The curry starts with toasted mustard and fenugreek seeds before onion, garlic, ginger, chili, and tomato are slowly cooked down into a deeply flavorful base. Fresh fish is gently simmered in coconut milk until tender, allowing the sauce to become thick, fragrant, and intensely savory.
Served with rice, roti, or string hoppers, this is the kind of curry that tastes even better as the flavors continue developing.
What Is It?
Sri Lankan fish curry is a coconut-based curry made with firm white fish simmered in a spicy sauce flavored with curry leaves, chili, garlic, ginger, tomato, and aromatic whole spices.
Unlike heavier creamy curries, this style keeps a balance between richness and acidity. Coconut milk softens the heat while lime juice brightens the entire dish at the end.
The texture is light but full-bodied, with tender fish pieces absorbing the curry while remaining flaky and delicate.
A Little History
Fish curries are deeply connected to Sri Lanka’s coastal food culture. Surrounded by the Indian Ocean, the country has relied on seafood for generations, and curries became one of the most practical and flavorful ways to cook fresh fish.
Sri Lankan curries are heavily influenced by local spice cultivation and centuries of trade routes passing through the island. Ingredients such as curry leaves, coconut milk, chili, turmeric, fenugreek, and mustard seeds form the backbone of many traditional dishes.
Each region and household has its own variation. Some versions are fiery and intense, while others lean more heavily into coconut milk for a softer, creamier finish. Despite the differences, the combination of fish, spice, coconut, and acidity remains at the heart of the dish. For the other dishes in a rice and curry spread, see our guide to Sri Lankan curries, and the Sri Lanka travel and food guide for where to eat them.
At a glance
Serves
4
Calories
328 kcal
Protein
see recipe card
Course
Main Course
Why it works
01 Whole spices sizzled in coconut oil first
02 Lime at the end balances the richness
03 Tastes even better after resting

Cooking this later?
Save it to your Pinterest board so it’s there when you need it.
What You Need
Exact amounts are in the recipe card
Equipment tip: For curry prep, the chef’s knife we recommend handles aromatics and fish, while this stainless cookware set suits simmering the curry. Serve with rice made in our rice cooker pick.
For the Curry
- Firm white fish
- Onion
- Tomato
- Garlic
- Fresh ginger
- Green chili
- Turmeric powder
- Chili powder
- Fenugreek seeds
- Mustard seeds
- Curry leaves
- Thick coconut milk
- Coconut oil
- Salt
- Lime juice

Step-by-Step Instructions
The curry develops flavor in stages, starting with whole spices sizzling in coconut oil to release their aroma into the base of the dish.
Onion, garlic, ginger, curry leaves, and chili are sautéed until soft and fragrant before tomato and powdered spices are added to create a thick spiced mixture. The fish is then coated gently in this base so it absorbs the flavors without breaking apart.
Coconut milk is added toward the end, allowing the sauce to become smooth and rich while keeping the curry balanced and fresh. Gentle simmering is important to keep the fish tender and flaky.
A squeeze of lime at the end lifts the curry and balances the richness perfectly.
1. Toast the whole spices
Heat the coconut oil in a large pot over medium heat.
Add the mustard seeds and fenugreek seeds. Let them sizzle until fragrant.
2. Build the base
Add the sliced onion, curry leaves, garlic, ginger, and green chili. Sauté until soft and lightly golden.
Stir in the turmeric powder, chili powder, and chopped tomato. Cook until the tomato softens and breaks down into the mixture.

3. Add the fish and coconut milk
Add the fish pieces and gently coat them in the spice mixture.
Pour in the coconut milk and add a splash of water if needed. Season with salt.
Simmer uncovered over low heat for 10–15 minutes until the fish is fully cooked and the curry thickens slightly.
Tip: Avoid stirring the fish too much to prevent breaking.
4. Finish with lime
Finish with fresh lime juice before serving.
Serving & Storage
Serving
Sri Lankan fish curry is traditionally served with steamed rice, roti, string hoppers, or coconut sambol. It also pairs beautifully with dhal curry and lightly pickled vegetables as part of a larger rice-and-curry spread.
The curry often tastes even better after resting for a few hours as the spices continue infusing into the sauce.
Storing Leftovers
Store leftovers in an airtight container in the refrigerator for up to 2 days. Reheat gently over low heat to keep the fish intact and prevent the coconut milk from splitting.
| Fish curry | up to 2 days |
For extra freshness, add another squeeze of lime just before serving.

Sri Lankan fish curry
Ingredients
- 400 g firm white fish
- 1 onion sliced
- 1 tomato chopped
- 2 cloves garlic minched
- 1 cm ginger grated
- 1 green chilli sliced
- 1 tsp tumeric powder
- 1 tsp chilli powder to taste
- 1/2 tsp fenugreek seeds
- 1/2 tsp mustard seeds
- 1 sprig curry leaves
- 150 ml coconut milk thick
- 10 gr coconut oil
- salt to taste
- juice of half a lime
- Use freshly ground spices for a richer flavor.
- Adjust chili levels to your heat preference.
- Avoid stirring the fish too much to prevent breaking.
🧊 Storage:
Keep in an airtight container in the fridge for up to 2 days. Flavors deepen over time.
Instructions
- Heat coconut oil in a pot. Add mustard seeds and fenugreek. Let them sizzle.
- Add sliced onion, curry leaves, garlic, ginger, and green chili. Sauté until soft and golden.
- Stir in turmeric, chili powder, and chopped tomato. Cook until the tomato breaks down.
- Add the fish pieces and gently coat them in the spice mixture.
- Pour in the coconut milk and a splash of water if needed. Add salt.
- Simmer uncovered on low heat for 10–15 minutes, or until the fish is cooked through and the curry is thick and fragrant.
- Finish with a squeeze of lime juice.
- Serve hot with rice, roti, or string hoppers.
Made this curry?
Rate it with the stars in the recipe card and tell us how it went in the comments: what you swapped, what you added, how spicy you made it.
Products we use
Our kitchen kit for this recipe

Aroma Digital Rice Cooker & Food Steamer
View in shop
Victorinox Fibrox Pro Chef’s Knife (20 cm)
View in shop
T-fal Stainless Steel Cookware Set (11-piece)
View in shop
Wooden Spoons
View in shopMore to cook
More recipes from our kitchen



