Indonesian fish curry is a coconut-milk curry built around tender fish, lemongrass, lime, and a fragrant spice paste. This home-style version takes inspiration from gulai ikan and is served hot with rice; ingredients and methods vary across Indonesia and from one household to another.
Ingredients
- 1 1/2 lb (680 g) firm white fish fillets, such as cod, snapper, halibut, or mahi-mahi, skin removed if desired
- 1 tsp (6 g) fine salt, divided, plus more to taste
- 4 medium shallots (about 4 oz / 120 g), peeled and roughly chopped
- 4 garlic cloves (about 12 g), peeled and roughly chopped
- 1-inch (2.5 cm) piece fresh ginger (about 15 g), peeled and chopped
- 1-inch (2.5 cm) piece fresh galangal (about 15 g), peeled and chopped; if unavailable, use an equal amount of ginger, which makes the flavor warmer and less piney
- 2 red Fresno or Thai chilies (about 20 g), stems removed; remove the seeds for a milder curry
- 1/2 tsp (1.5 g) ground turmeric
- 3 candlenuts (about 12 g), roughly chopped; substitute 3 unsalted macadamia nuts or cashews for body, noting that they make the paste slightly sweeter
- 2 tbsp (30 ml) neutral oil, such as canola or avocado oil
- 1 lemongrass stalk (about 30 g), tough outer layers removed and the stalk bruised with the back of a knife
- 4 kaffir lime leaves (about 1 g), fresh or frozen, torn; if you cannot find them, add 1 tsp finely grated lime zest near the end
- 1 can full-fat coconut milk, 13.5 fl oz (400 ml), well shaken
- 1 cup (240 ml) water or unsalted fish stock
- 1 tbsp (15 g) tamarind paste
- 1 tsp (4 g) light brown sugar or palm sugar, finely grated
- 1 tbsp (15 ml) fresh lime juice, plus lime wedges for serving
- 2 tbsp (8 g) chopped cilantro, for serving (optional)
Instructions
- Pat the fish dry and cut it into pieces about 1 1/2 inches (4 cm) wide so they cook evenly and are large enough to handle without falling apart. Check carefully for pin bones, then season the pieces all over with about half of the salt. Keep the fish refrigerated while you prepare the vegetables and spice paste. This part of the preparation takes about 15 minutes.
- Put the shallots, garlic, ginger, galangal, chilies, turmeric, candlenuts, and remaining salt in a small food processor or blender. Pulse, scraping down the sides as needed, until the mixture forms a coarse, fairly even paste; add a teaspoon of water only if the blades cannot catch. Allow about 10 minutes for blending and organizing the ingredients. A little texture is fine, but large chunks of nut or shallot can make the finished sauce uneven.
- Heat the oil in a wide, heavy saucepan or deep skillet over medium heat. Add the spice paste and cook for about 8 minutes, stirring frequently and lowering the heat if it begins to stick. It should smell aromatic and look a shade darker, with the raw, sharp smell of the shallots and garlic softened. Do not rush this step by turning the heat high: a scorched paste can make the entire curry taste bitter.
- Add the bruised lemongrass and torn lime leaves, then stir for 2 minutes so their fragrance begins to infuse the paste. Pour in the coconut milk and water or stock. Stir in the tamarind paste and sugar, scraping the bottom of the pan to loosen any browned paste. Bring the sauce just to a gentle simmer, then cook it uncovered for 8 minutes, stirring occasionally. Avoid a vigorous boil, which can make the coconut milk separate and leave the sauce oily.
- Taste the sauce before adding the fish. It should be savory, gently tangy, and rounded by the coconut milk; add a little more salt, tamarind, or sugar if needed, a small amount at a time. Lower the heat so the sauce barely simmers. Add the fish pieces in one layer, spoon sauce over them, and cook gently for about 7 minutes, turning the pieces once with a thin spatula if they are sturdy enough. Thicker pieces may need another minute or two. Check the center of the thickest piece with a food thermometer: USDA FSIS lists 145°F (63°C) as the safe minimum internal temperature for fish. The flesh should also look opaque and separate easily into flakes.
- Turn off the heat and stir in the lime juice. Lift out the lemongrass stalk and lime leaves if you prefer not to serve them in the bowls. Taste the sauce once more and adjust the salt or lime to suit the fish and your coconut milk. Serve promptly, spooning plenty of sauce over each portion and finishing with cilantro and lime wedges if using.
Tips
- Choose fish that holds together. Cod, snapper, halibut, and mahi-mahi work well when cut into generous pieces. Very thin fillets can break up before the sauce has time to flavor them. If using a delicate fish, cut larger pieces and turn them as little as possible; you can also poach the fish in batches so the pan is not crowded.
- Keep the curry at a gentle simmer. Coconut milk is more likely to separate if boiled hard, and fish can become dry and firm when it cooks too aggressively. Once the fish goes in, look for a few small bubbles at the edge of the pan rather than a rolling boil. Check the thickest piece for temperature instead of relying on color alone.
- Adjust the heat and tang in small steps. Chili strength varies, so start with fewer chilies if you are unsure and serve sliced chili at the table for anyone who wants more heat. Tamarind brands also differ in concentration; taste the sauce before adding extra. Lime juice goes in after cooking to keep its bright flavor.
- Use fresh or properly thawed fish. Thaw frozen fish overnight in the refrigerator, then pat it dry before seasoning. Excess water can thin the curry and prevent the fish from browning slightly at the surface as it cooks in the sauce. Do not leave raw fish at room temperature while preparing the paste.
Serving Suggestions
Serve the curry in shallow bowls over steamed jasmine rice or another plain, fluffy rice. Rice absorbs the coconut and tamarind sauce without competing with the fish, and it makes the dish easy to portion. For a more substantial meal, offer extra rice at the table and let everyone spoon the curry over it as they eat. Lime wedges are useful because diners can brighten their own serving without changing the seasoning of the whole pan.
A simple plate of sliced cucumber, tomato, or lightly dressed greens makes a fresh contrast to the warm, rich sauce. Quickly cooked green beans or sautéed greens also work, especially if they are seasoned lightly so they do not overwhelm the lemongrass and galangal. Keep any side dish mild and serve it separately. If you are serving a group, put the fish in a warm serving bowl and pour the sauce over it, rather than leaving the pan on a hot burner where the fish can continue cooking.
Variations
For a milder curry, use one red chili, remove its seeds, or leave the chilies out of the paste and offer chili sauce separately. For more heat, add a sliced chili to the sauce after it has simmered, then taste before adding another. A little extra lime juice at the table can sharpen a rich batch, while a small pinch of sugar can soften a sauce that tastes especially tart. Make either adjustment gradually; a spoonful at a time is easier to correct than a large addition.
If galangal is unavailable, ginger is a practical substitute, although it lacks galangal’s distinctive citrusy, resinous note. Candlenuts are used in some Indonesian spice pastes to thicken and enrich the sauce; macadamias or cashews are convenient alternatives, but they bring a slightly sweeter, nuttier flavor. Kaffir lime leaves add a floral citrus aroma. If you cannot find them, use the stated lime zest rather than adding a large amount of juice, which can make the sauce too sour. These swaps produce a delicious home-style curry, not an exact match for every regional version.
You can also use peeled shrimp instead of fish. Add them only when the sauce is ready and simmer until they are opaque and firm, usually about 3 to 5 minutes depending on their size; avoid prolonged cooking, which makes shrimp rubbery. For a vegetable version, replace the fish with firm tofu and chunks of eggplant or green beans. Simmer the vegetables until tender before finishing with lime juice; the cooking time will depend on the size of the pieces. Keep the spice paste, coconut milk, and tamarind balance as written, then season to taste.
Storage and Reheating
Refrigerate leftover curry within 2 hours of cooking, in a covered container, and use it within 3 to 4 days. If possible, store the fish under the sauce so it does not dry out. For easier reheating, divide the curry into individual portions and chill it promptly rather than leaving the saucepan on the counter to cool. Do not leave seafood curry at room temperature for more than 2 hours, or more than 1 hour when the room or outdoor temperature is above 90°F (32°C).
Reheat only the portion you plan to eat. Warm it in a covered saucepan over low heat, stirring the sauce gently and turning the fish carefully, until the leftovers reach 165°F (74°C). Add a splash of water if the coconut sauce has thickened in the refrigerator. A microwave also works: use a covered, microwave-safe dish, heat in short intervals, and check the center of the portion with a food thermometer. The fish may become a little firmer after reheating, so gentle heat and a single reheating are preferable.
For best texture, freezing is optional rather than ideal: coconut sauce can separate slightly after thawing, and cooked fish may become softer. If you do freeze it, cool and refrigerate it promptly first, then transfer it to a freezer-safe airtight container and use it within about 2 months for best quality. Thaw overnight in the refrigerator and reheat gently to 165°F (74°C). Do not refreeze a portion that has already been thawed and reheated.
Frequently Asked Questions
What fish is best for Indonesian fish curry? Choose a firm, mild fish that can be cut into thick pieces, such as cod, snapper, halibut, or mahi-mahi. Fresh or frozen fish can both work; thaw frozen fillets in the refrigerator and pat them dry first. Avoid very thin fillets if you want the pieces to stay intact in the sauce.
Can I make the spice paste without a food processor? Yes. Finely mince the shallots, garlic, ginger, galangal, and chilies, then crush the candlenuts or substitute nuts with a mortar and pestle. The sauce will have a more rustic texture, but it will still taste good. Take extra care to chop the ingredients small so they soften evenly while the paste cooks.
Can I use light coconut milk? You can, but the sauce will be thinner and less creamy. If you choose it, simmer the sauce uncovered for a few extra minutes before adding the fish, then check its flavor and consistency. Do not try to thicken it by boiling the fish for longer; add the fish only once the sauce is close to the thickness you want.
How can I tell when the fish is done? The most reliable check is a food thermometer inserted into the center of the thickest piece; fish should reach the USDA FSIS safe minimum of 145°F (63°C). It should also look opaque and flake with gentle pressure. Begin checking at about 7 minutes because the exact cooking time depends on the type and thickness of the fish.
Can I make the curry ahead? You can prepare the spice paste and chop the aromatics earlier in the day, keeping them covered in the refrigerator. For the best fish texture, cook the sauce first and add the fish shortly before serving. If you cook the whole curry in advance, cool and refrigerate it within 2 hours, then reheat gently to 165°F (74°C); expect the fish to be a little firmer.
Is this curry very spicy? With two chilies, it is usually moderately warm, but the result depends on the variety and heat of the chilies. For a gentler version, remove their seeds or use one chili. You can always serve fresh sliced chili alongside the finished curry, which lets each person adjust the heat in their own bowl.
Related
- Authentic Jamaican Curry Powder Recipe, Made at Home
- Authentic Chinese Curry Sauce Recipe at Home
- Afghan Curry Recipe with Chicken and Potatoes
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).