Chinese Fish Head Curry with Coconut Milk and Vegetables

Updated November 4, 2026

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

Jump to recipe

Chinese Fish Head Curry with Coconut Milk and Vegetables

Chinese fish head curry is a boldly spiced curry of bone-in fish head, coconut milk, and vegetables, served hot with rice to catch the fragrant sauce. Versions vary across Chinese households and regional cooking, especially in Singapore and Malaysia; this home-style version balances curry spices, tart tamarind, and creamy coconut milk without masking the fish.

Ingredients

  • 1 large cleaned fish head, about 2½ lb (1.1 kg), split and cut into 4 pieces; ask the fishmonger to remove the gills and make the cuts
  • 4 medium shallots, about 4 oz (115 g), peeled and roughly chopped
  • 5 garlic cloves, about ½ oz (15 g), peeled
  • 1 piece fresh ginger, 2 in (5 cm) long and about 1 oz (30 g), peeled and sliced
  • 1 lemongrass stalk, about ½ oz (15 g), tough outer layers removed and tender part sliced
  • 1–2 red chilies, about ¾ oz (20 g), stemmed; use one for milder curry
  • 2 tbsp (30 ml) water, for blending the aromatics
  • 2 tbsp (30 ml) neutral cooking oil
  • 1 sprig curry leaves, about 10–12 leaves, optional but fragrant
  • 3 tbsp (24 g) fish curry powder, or medium-hot curry powder
  • 1 tsp (3 g) ground turmeric
  • 1 tsp (6 g) shrimp paste, optional
  • 1 can coconut milk, 13.5 oz (400 ml), well shaken
  • 1½ cups (360 ml) unsalted fish stock or water
  • 1 tbsp (15 g) tamarind concentrate or tamarind paste
  • 1 tbsp (15 ml) fish sauce
  • 1 tsp (4 g) sugar
  • 1 medium eggplant, about 9 oz (250 g), cut into 1 in (2.5 cm) pieces
  • 2 medium tomatoes, about 10½ oz (300 g), cut into wedges
  • 8 oz (225 g) fresh okra, stems trimmed
  • ¾ tsp fine salt (about 4 g), plus more to taste
  • 1 lime, cut into wedges, for serving

Instructions

  1. Prepare the fish and aromatics. Check that the fish head is thoroughly cleaned, with the gills removed, and cut into manageable pieces. Pat it dry with paper towels and keep it refrigerated while you prepare the curry base. Blend the shallots, garlic, ginger, lemongrass, chilies, and 2 tablespoons water into a coarse paste. If you do not have a blender, mince the ingredients very finely and pound them together in a mortar. A little texture is fine; it will soften as the paste cooks.
  2. Fry the paste. Heat the oil in a wide, heavy pot or deep sauté pan over medium heat. Add the curry leaves, if using, and fry for about 20 seconds, just until fragrant. Add the blended paste and cook for 7 minutes, stirring often and lowering the heat if it starts to catch. The paste should lose its raw, sharp smell and turn glossy. Stir in the shrimp paste, if using, during the last minute so it disperses through the aromatics.
  3. Bloom the spices. Add the curry powder and turmeric and stir constantly for 1 minute. If the mixture looks dry or begins sticking, add a splash of the measured stock or water. Briefly frying the spices in the oily paste helps release their aroma; avoid letting them scorch, which can make the sauce bitter.
  4. Make the curry sauce. Pour in the coconut milk and stock, then stir in the tamarind, fish sauce, sugar, and salt. Add the tomato wedges and bring the sauce to a gentle simmer over medium heat, stirring so the paste is evenly distributed. Simmer uncovered for 8 minutes. It should smell rounded and fragrant, with a light sheen of oil on the surface; it does not need to reduce to a thick paste.
  5. Cook the vegetables. Add the eggplant and simmer gently for 5 minutes. Add the okra and continue for 3 minutes. Keep the curry at a low, steady simmer rather than a hard boil, which can break up the vegetables and make the coconut milk look grainy. If the sauce seems very thick, add a little water; it should be loose enough to flow around the fish.
  6. Simmer the fish. Nestle the fish head pieces into the sauce, turning them once carefully so they are coated. Cover the pot and simmer gently for about 14–16 minutes, depending on the thickness of the pieces. Check the thickest edible part with a food thermometer, keeping the tip away from bone: USDA FSIS lists 145°F (63°C) as the safe minimum internal temperature for fish. If a piece has not reached that temperature, continue cooking and check again after a couple of minutes. The flesh should be opaque and come away from the bone readily, but avoid vigorous stirring because the pieces are delicate.
  7. Season and serve. Taste the sauce and adjust with more salt, a little sugar, or a squeeze of lime as needed. For a brighter sour note, add lime at the end rather than boiling it in the curry. Transfer the fish and vegetables to a warm serving dish, spoon over plenty of sauce, and serve with lime wedges.

Tips

  • Choose a substantial, fresh head. Red snapper is a common choice, but another firm white fish such as grouper works well. Ask the fish counter to split and portion it; the pieces should fit comfortably in your pot. Gills can make a curry bitter, so confirm that they have been removed.
  • Use a practical spice substitute. Fish curry powder is sold in some Asian groceries, but a medium-hot Madras-style curry powder is a reasonable alternative. The blend will taste different and may be more or less hot, so start with 2 tablespoons if you are unsure, then add more with the coconut milk if needed. Curry leaves add a distinctive citrusy aroma; omit them if unavailable rather than substituting a large amount of another herb.
  • Adjust the sourness thoughtfully. Tamarind concentrate varies in strength. If yours is especially dark or concentrated, begin with 2 teaspoons, simmer the sauce, and taste before adding the rest. If tamarind is unavailable, finish with 1 tablespoon lime juice instead; lime gives a fresher, sharper acidity, so stir it in after cooking.
  • Keep the fish intact. A wide pot gives the pieces room and makes it easier to lift them out without breaking them. If you have only a narrow pot, add the fish in a single layer and avoid stirring once it is cooked. Use a slotted spoon or broad spatula to serve.

Serving Suggestions

Serve the curry immediately with steamed jasmine rice or another plain long-grain rice. Rice soaks up the coconut-and-tamarind sauce and provides a mild contrast to the curry’s heat. Offer lime wedges at the table so diners can brighten their own portions, and put out extra rice if you have a generous amount of sauce.

For a fuller meal, add a simple side of blanched greens, cucumber slices, or a lightly dressed salad. Keep sides relatively plain and crisp; a second rich or heavily spiced dish can compete with the fish. Remind diners that fish heads contain small bones, and provide a plate for discarded bones. Spoon the sauce and vegetables over rice, then lift out fish pieces carefully rather than encouraging guests to break them apart in the serving pot.

Variations

Make it less spicy: Use one mild red chili, remove its seeds, or leave the chili out. Curry powder still brings warmth and aroma, so the dish will remain flavorful. To make the finished curry hotter, serve sliced fresh chili on the side instead of increasing the heat in the whole pot.

Change the vegetables: Long beans, bell pepper, or chunks of potato can replace some of the eggplant and okra. Add potatoes early enough to become tender, allowing roughly 12–15 minutes of simmering before adding the fish; cut them into small, even pieces. Add quick-cooking greens near the end so they stay bright. The vegetables are flexible, but keep the total amount close to the recipe’s quantity so the sauce still coats everything.

Use fish fillets: If a whole head is unavailable, substitute 1½ lb (680 g) firm, boneless fish fillets cut into large pieces. Make the sauce and cook the vegetables as directed, then add the fish for the last 6–10 minutes, depending on thickness, until it reaches 145°F (63°C) in the thickest part. Fillets are easier to eat but give the sauce less of the deep, gelatinous character that comes from a bone-in head.

Make the sauce dairy-free and milder in richness: The recipe is already dairy-free. For a lighter sauce, replace up to half of the coconut milk with stock or water; the curry will be thinner and less creamy, so taste and adjust the salt and tamarind at the end. Do not replace all the coconut milk unless you specifically want a brothier curry.

Storage and Reheating

Refrigerate leftovers within 2 hours of cooking, in a covered container. Cooked fish curry keeps for 3–4 days in the refrigerator. For the best texture, store the fish pieces with enough sauce to cover them, and handle them gently when transferring; the flesh becomes more fragile after cooking. If you expect to have leftovers, serving portions with a clean spoon helps avoid introducing food from the table into the storage container.

Reheat only the portion you plan to eat. Warm it in a covered saucepan over low heat, turning the fish carefully and adding a splash of water if the sauce has thickened. Heat leftovers to 165°F (74°C), checking with a food thermometer, as USDA FSIS recommends. You can also microwave a portion in a covered microwave-safe dish, pausing to stir the sauce and rotate the dish; avoid prolonged high-power heating, which can dry out the fish. Freeze leftovers for up to 2 months for better quality, thaw overnight in the refrigerator, and reheat thoroughly. Coconut milk may separate slightly after chilling or freezing; gentle stirring usually brings the sauce back together.

Frequently Asked Questions

Which fish head is best for curry?

Choose a fresh, fairly large head from a firm fish, such as snapper or grouper. The cheek and collar offer substantial pieces, and the bones add flavor to the sauce. Ask the fishmonger to clean it, remove the gills, and cut it into portions that will fit your pot. If the head smells strongly fishy or the flesh looks dull, choose another one.

Can I make Chinese fish head curry without shrimp paste?

Yes. Shrimp paste is optional and contributes a deep, savory note, but the curry is still flavorful without it. Leave it out and use the fish sauce listed in the recipe. If you need to avoid shellfish, check the fish sauce label and use a suitable alternative, such as 1 tablespoon (15 ml) soy sauce; the finished curry will taste less briny and more soy-forward.

Can I prepare the curry in advance?

You can make the curry sauce and cook the vegetables a day ahead, cool them promptly, and refrigerate them covered. Reheat the sauce to a simmer, then add the raw fish and cook it to 145°F (63°C) just before serving. This approach keeps the fish from overcooking during reheating. If the sauce thickens in the refrigerator, loosen it with a little water or stock.

How can I tell when the fish head is cooked?

Use a food thermometer in the thickest edible flesh, taking care not to touch bone, and cook fish to 145°F (63°C). The flesh should also look opaque and separate more easily from the bone. Because fish head pieces vary in size, rely on the temperature rather than assuming every piece will finish at the same minute.

Why does my coconut curry look separated?

A little sheen of oil is normal, but a sauce that looks curdled may have been boiled too hard or heated for too long. Keep the curry at a gentle simmer and stir the sauce carefully before adding the fish. If it separates, lower the heat and whisk or stir the sauce gently; a small splash of warm water can help bring it together without changing the flavor much.

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