Soon Heng Fish Head Curry: A Fragrant, Tangy Recipe

Updated November 4, 2026

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

Jump to recipe

Soon Heng Fish Head Curry: A Fragrant, Tangy Recipe

Soon Heng fish head curry is a Singapore- and Malaysia-style curry of fish head simmered with aromatics, tamarind, coconut milk, and vegetables. This home-style version balances a fragrant curry base with a bright, gently sour broth; serve it hot with rice so the sauce and tender fish are easy to enjoy. Fish head curry has regional and family variations, so this recipe is a practical interpretation rather than a claim to reproduce one specific shop’s formula.

Ingredients

  • 1 large firm white-fish head, split into serving pieces, about 2½–3 lb (1.1–1.4 kg); ask the fishmonger to clean and cut it
  • 3 tbsp neutral cooking oil (45 ml), such as canola or sunflower oil
  • 1 tsp black or brown mustard seeds (about 3 g)
  • ¼ tsp fenugreek seeds (about 1 g)
  • 1 sprig fresh curry leaves, about 10–12 leaves (5 g); see the substitution note in Tips
  • 6 medium shallots, peeled and roughly chopped, about 1 cup (150 g)
  • 5 garlic cloves, peeled (15 g)
  • 2 tbsp peeled, chopped fresh ginger (30 g)
  • 1 stalk lemongrass, tender lower portion sliced, about 2 tbsp (15 g)
  • 2 red chiles, stemmed and roughly chopped (20 g), or fewer for a milder curry
  • 3 tbsp fish curry powder (24 g), preferably a South Indian-style blend
  • 1 tsp ground turmeric (3 g)
  • 2 tbsp tamarind paste (30 g), or 3 tbsp (45 ml) unsweetened tamarind concentrate diluted as directed
  • 1 can full-fat coconut milk, about 13½ oz (400 ml)
  • 2 cups water or unsalted fish stock (480 ml), plus a little more if needed
  • 1 medium eggplant, cut into 1-inch (2.5 cm) chunks, about 10 oz (280 g)
  • 2 medium tomatoes, cut into wedges, about 10 oz (280 g)
  • 8 oz okra, trimmed (225 g)
  • 1½ tsp fine salt (about 9 g), divided, then more to taste
  • ½ tsp sugar (2 g), optional, to soften the sharp edge of the tamarind
  • 1 tbsp lime juice (15 ml), plus lime wedges for serving

Instructions

  1. Prepare the fish and curry paste. If the fishmonger has not done so, check that the head is split into manageable pieces and that the gills are removed. Rinse briefly under cold running water, then pat dry thoroughly; take care around sharp bones. Sprinkle the pieces with ½ teaspoon of the salt and set them aside while you make the base. In a blender or small food processor, blend the shallots, garlic, ginger, lemongrass, and chiles with 2 tablespoons of water until they form a coarse, spoonable paste. Add another tablespoon of water only if needed to help the blades move.
  2. Bloom the whole spices. Set a wide, heavy pot or Dutch oven over medium heat and add the oil. When it shimmers, add the mustard seeds and fenugreek seeds. Cook for about 1 minute, partly covered if the mustard seeds begin popping, until they are fragrant. Stir in the curry leaves and cook for 15–20 seconds. Keep the heat moderate: scorching the seeds or leaves can make the curry bitter.
  3. Cook the aromatics and spices. Add the blended paste carefully; it may splutter. Cook for 5–6 minutes, stirring often and scraping the bottom, until the raw onion-and-garlic smell fades and the paste looks thicker. Stir in the curry powder and turmeric and cook for 30 seconds. If the mixture sticks, add a tablespoon of water rather than turning the heat very high. This brief frying helps the spices become fragrant without burning.
  4. Build the curry broth. Stir in the tamarind, coconut milk, and 2 cups of water or fish stock. Add the remaining 1 teaspoon of salt and the optional sugar. Bring the mixture just to a gentle simmer, stirring to loosen any paste from the bottom, then simmer uncovered for 8 minutes. Avoid a hard boil, which can make the coconut milk separate and can reduce the sauce before the vegetables cook.
  5. Simmer the vegetables. Add the eggplant and cook gently for 5 minutes. Add the tomato wedges and okra, then simmer for 3 more minutes. The eggplant should be starting to soften but should not collapse, and the okra should still hold its shape. If the sauce is very thick, add up to ½ cup (120 ml) water. Taste a spoonful and adjust the salt or tamarind to suit your preferred balance.
  6. Cook the fish in the curry. Lower the fish-head pieces into the simmering sauce, arranging them in a single layer as much as possible. Spoon sauce over the exposed surfaces, cover the pot, and simmer gently for about 10 minutes. Fish thickness and the size of the pieces affect the timing, so check the thickest edible section with a food thermometer without touching bone. USDA FSIS lists 145°F (63°C) as the safe minimum internal temperature for fish; if a piece has not reached it, continue simmering and recheck after 1–2 minutes. The flesh should also look opaque and separate readily from the bone. Handle the pieces carefully so they stay intact.
  7. Finish and serve. Turn off the heat, stir the lime juice into the sauce, and taste once more for salt and sourness. If you want more tang, add lime a teaspoon at a time; if the curry tastes too sharp, stir in a pinch of sugar or a splash of coconut milk. Let it stand for 2 minutes, then ladle the sauce and vegetables around the fish. Warn diners that fish heads contain small bones.

Tips

  • Choose a suitable fish head. Red snapper, grouper, sea bass, and other firm white fish work well. Ask the fishmonger for a cleaned, split head with the gills removed; avoid pieces with a strong sour or ammonia-like smell. If a whole head is unavailable, use about 2 lb (900 g) of thick, bone-in fish steaks, adjusting the simmer time and checking the center of the thickest piece for 145°F (63°C).
  • Use curry powder meant for fish curry. South Indian-style fish curry powder is widely available in South Asian groceries. If you cannot find it, use a mild Madras curry powder; the result may be less specifically fish-curry-like, so start with 2 tablespoons (16 g), taste the broth, and add more if needed. Curry blends vary in heat and salt, which is why the recipe seasons again at the end.
  • Make a practical curry-leaf swap. Fresh curry leaves give the broth a distinctive citrusy, herbal aroma. If they are unavailable, omit them rather than using a large amount of an unrelated herb. A small strip of lime zest added with the curry paste gives a fresh citrus note, but it will not taste exactly like curry leaves. Dried leaves are less aromatic; use about 1 teaspoon (1 g) and expect a subtler flavor.
  • Keep the simmer gentle. A rolling boil can break delicate fish apart and may cause the coconut milk to look grainy. Use a wide pot, turn the pieces only if necessary, and baste them with sauce instead of stirring through the head. If you need extra liquid, add warm water a little at a time.

Serving Suggestions

Serve the curry as soon as it is ready, with steamed jasmine rice or another plain long-grain rice. The mild rice balances the spicy, sour sauce and makes it easier to serve generous spoonfuls of broth. A bowl of rice noodles or plain roti is also useful for soaking up the coconut-tamarind gravy. Put lime wedges on the table for diners who like extra brightness, and offer sliced fresh chile separately rather than making the whole pot hotter.

Because fish head pieces include bones and different cuts of meat, serve them with a large spoon and a small plate for bones. A simple side of sliced cucumber, blanched greens, or lightly dressed cabbage adds a crisp contrast without competing with the curry. If serving several people, place the pot on the table only if it can be kept safely hot; otherwise portion the fish and sauce onto warm plates just before eating.

Variations

Adjust the heat. For a gentler curry, remove the chile seeds or use one chile; for more heat, add a chopped bird’s-eye chile with the curry paste. Chiles vary considerably, so changing the garnish is an easy way to let each person control the spice level.

Change the vegetables. The eggplant, tomato, and okra make a familiar combination, but you can replace the eggplant with 8 oz (225 g) of green beans or use a few thick wedges of potato. Add potatoes with the eggplant and simmer until almost tender before adding the fish. Keep the vegetable quantity close to the original so the pot still has enough broth.

Use a different souring ingredient. Tamarind gives the curry a rounded, fruity tartness. If you cannot get it, use 1½ tablespoons (22 ml) lime juice in the broth and add more to taste after cooking. Lime is sharper and more citrus-forward, so the finished curry will taste different. Do not replace tamarind with sweetened chutney, which can make the sauce overly sweet.

Make it without coconut milk. For a lighter-tasting, less creamy broth, replace the coconut milk with 1½ cups (360 ml) additional water or unsalted stock. Start with less liquid and adjust the consistency at the end. The sauce will be thinner and less mellow, so check the salt and tamarind carefully before serving.

Storage and Reheating

Cool leftovers promptly and refrigerate them within 2 hours of cooking, in a covered shallow container. For best texture, store the fish and sauce together and avoid repeatedly transferring or stirring the delicate pieces. The curry keeps for 3–4 days in the refrigerator. Fish head curry can be frozen for up to 2 months for best quality, although the coconut sauce may separate slightly after thawing; stir gently as it warms.

Reheat only the portion you plan to eat. Warm it in a covered saucepan over low heat, adding a tablespoon or two of water if the sauce has thickened, until the center reaches 165°F (74°C). Check with a food thermometer and avoid boiling, which can break up the fish. A microwave also works: cover the dish loosely, heat in short intervals, and turn or rearrange the pieces carefully so the curry heats evenly.

Frequently Asked Questions

What fish is best for fish head curry?
Choose a firm white fish with a substantial head, such as snapper, grouper, or sea bass. A fishmonger can clean and split it for you, which makes it easier to fit in a pot and serve. If you use smaller fish-head sections or bone-in steaks instead, check doneness by temperature rather than relying only on the clock.

Can I make the curry ahead?
You can prepare the curry base and vegetables a day ahead, cool them promptly, and refrigerate them covered. Reheat the base to a simmer, then add the raw fish and cook it through just before serving. This keeps the fish from becoming overcooked during storage and reheating. If the entire curry is already cooked, refrigerate leftovers within 2 hours and reheat them to 165°F (74°C).

Why is my curry sour or bitter?
Tamarind strength differs by product, so an overly sour curry may simply need a little more coconut milk or a pinch of sugar. Bitterness is more often caused by burned mustard or fenugreek seeds, scorched curry paste, or too much fenugreek. Keep the oil at medium heat, stir the paste frequently, and add a small amount of water if it catches on the pot.

Can I use frozen fish head?
Yes. Thaw it in the refrigerator, not on the counter, and pat it dry before seasoning. If it is still partly frozen in the center, allow more time for safe thawing rather than putting a frozen piece directly into the curry; unevenly sized pieces may cook at different rates. Keep raw fish and its juices separate from ready-to-eat foods.

How can I tell when the fish is done?
Check the thickest edible flesh with a food thermometer, taking care not to touch the bone. The USDA FSIS safe minimum is 145°F (63°C). The flesh should be opaque and should separate from the bone with gentle pressure, but appearance alone is not a substitute for the temperature check.

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