Curry Fish Head Ubi: A Fragrant Coconut Curry

Updated November 4, 2026

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

Jump to recipe

Curry Fish Head Ubi: A Fragrant Coconut Curry

Curry fish head ubi is a Southeast Asian-style fish head curry with sweet potato, coconut milk, curry spices, and a pleasantly tangy broth. This version draws on Malaysian and Singaporean curry traditions, where recipes vary by household and region; here, ubi means sweet potato, which softens into the sauce and balances the fish and tamarind.

Ingredients

  • 1 cleaned, split fish head, about 2½–3 lb (1.1–1.4 kg), such as snapper or grouper; ask the fishmonger to split it and remove the gills
  • 1 lb sweet potato, peeled and cut into 1½-inch (4 cm) chunks, about 2½ cups (450 g); this is the ubi in this recipe
  • 3 tablespoons neutral cooking oil (45 ml)
  • 1 medium yellow onion, thinly sliced, about 1½ cups (180 g)
  • 4 garlic cloves, finely chopped, about 4 teaspoons (12 g)
  • 1 tablespoon finely chopped fresh ginger (15 g)
  • 2 stalks lemongrass, tender lower sections bruised, about 2 oz (55 g)
  • 3 tablespoons Malaysian or Indonesian fish curry powder (24 g); use a blend labeled fish curry powder if available
  • ½ teaspoon ground turmeric (1.5 g)
  • 1 cup (240 ml) water, plus up to ½ cup (120 ml) more if needed
  • 1 can unsweetened coconut milk, 13.5 fl oz (400 ml), well shaken
  • 1 tablespoon tamarind concentrate (15 g), or 2 tablespoons tamarind pulp (30 g) soaked in ¼ cup (60 ml) warm water and strained
  • 1 teaspoon fine salt (6 g), plus more to taste
  • 1 medium tomato, cut into wedges, about 1 cup (180 g)
  • 1 small eggplant, cut into 1-inch (2.5 cm) pieces, about 2 cups (220 g)
  • 1 cup loosely packed fresh curry leaves (about 8 g), optional but traditional in many versions
  • 1–2 fresh green chilies, slit lengthwise (10–20 g), optional
  • 1 tablespoon lime juice (15 ml), plus lime wedges for serving
  • 2 tablespoons chopped cilantro (8 g), for serving, optional

Instructions

  1. Prepare the fish and vegetables. If the fish head is not already split and cleaned, have the fishmonger prepare it; remove any remaining gills, which can taste bitter. Pat the fish dry with paper towels and keep it refrigerated while you chop the vegetables. Cut the sweet potato into evenly sized chunks so they become tender together. Set out the coconut milk and tamarind so they are ready to add.
  2. Build the aromatic base. Heat the oil in a wide, heavy pot or Dutch oven over medium heat. Add the onion and cook for 5–6 minutes, stirring now and then, until softened and translucent but not browned. Stir in the garlic, ginger, and bruised lemongrass and cook for 1–2 minutes, just until fragrant. If using curry leaves, add them now and stir until they begin to release their aroma.
  3. Bloom the spices. Add the fish curry powder and turmeric. Stir continuously for about 1 minute, making sure the spices coat the onion and do not scorch on the bottom of the pot. If the mixture looks dry or starts sticking, stir in a tablespoon of water. Blooming the spices briefly helps their flavor spread through the broth without leaving a raw, dusty taste.
  4. Simmer the sweet potato. Pour in 1 cup (240 ml) water and scrape the bottom of the pot to loosen any browned spice mixture. Stir in the coconut milk, tamarind, salt, and sweet potato. Bring the liquid just to a gentle simmer, then lower the heat and cook uncovered for about 15 minutes. Stir carefully once or twice; avoid a hard boil, which can make coconut milk look separated. The sweet potato should be nearly tender when pierced with a knife but should still hold its shape.
  5. Add the fish head. Nestle the fish head pieces into the curry, spooning some liquid over them. Add the slit chilies if you want heat. Cover the pot and simmer gently for 12–15 minutes, turning the pieces once if they are not mostly submerged. Keep the broth at a quiet simmer rather than a rolling boil, and handle the fish gently so it does not break apart. Cooking time depends on the thickness of the pieces.
  6. Finish the vegetables and check doneness. Add the eggplant and tomato, pressing them into the broth. Simmer uncovered for 5–7 minutes, until the eggplant is tender and the fish is opaque and flakes easily. Check the thickest portion of fish flesh with a food thermometer, avoiding the bone; USDA FSIS sets the safe minimum internal temperature for fish at 145°F (63°C). If a thick piece has not reached that temperature, continue simmering and check again after a few minutes.
  7. Adjust and serve. Turn off the heat and stir in the lime juice. Taste the broth and add more salt, tamarind, or a splash of water as needed: it should be savory, gently sour, and rich without tasting heavy. Let the curry stand for 3 minutes, then lift out the lemongrass stalks. Scatter with cilantro, if using, and bring the pot to the table with lime wedges.

Tips

  • Ask for a cleaned head. A fish head should have its gills removed and be cut into manageable pieces. Gills can impart bitterness, and a whole, uncut head is awkward to cook evenly. If buying pre-cut pieces, choose moist, fresh-smelling fish and keep it chilled until cooking.
  • Choose a firm fish. Snapper and grouper are good options because their flesh holds together in curry. Salmon head can also work, though it gives the broth a richer flavor. Avoid stirring vigorously after adding fish; gently spoon broth over it instead.
  • Adjust tamarind gradually. Tamarind concentrates vary in strength. Start with the listed amount, taste once the curry has simmered, and add a little more if the coconut milk tastes too rich. If you cannot find tamarind, use 1½ tablespoons (22 ml) lime juice at the end; the result will be brighter and less rounded, so add it in small increments.
  • Keep the sweet potato intact. Cut chunks to a similar size and simmer gently. If they are cooked before the fish is ready, lift them out with a slotted spoon and return them just before serving. This avoids a broken-down, overly thick curry.

Serving Suggestions

Serve the curry hot with steamed jasmine rice or another plain, long-grain rice. Rice catches the coconut-tamarind broth and makes the soft sweet potato easy to enjoy alongside the fish. For a more substantial meal, offer roti or another flatbread for dipping, but keep the accompaniments simple so the curry remains the focus.

A crisp cucumber salad, sliced raw cucumber, or lightly dressed greens provide a refreshing contrast to the warm spices. Put extra lime wedges and sliced chilies on the table so diners can adjust the acidity and heat in their own bowls. Fish head pieces contain bones, so serve with small plates for discarded bones and remind diners to eat carefully, especially when sharing the dish with children.

Variations

Use another kind of ubi: Sweet potato is convenient and gives this recipe a mild sweetness. In Malay usage, ubi can refer to several roots and tubers depending on the full name and local context. For a firmer, less sweet result, substitute peeled cassava, cut into small chunks, but simmer it in the broth until completely tender before adding the fish; it may take 25–35 minutes depending on the size of the pieces. Do not use raw cassava without peeling and cooking it thoroughly. Taro is another option, but it can make the broth thicker and slightly earthy.

Make it hotter: Add another slit green chili or a teaspoon of sambal when blooming the curry spices. For a gentler pot, omit the fresh chilies and choose a mild curry powder. Curry powder blends vary, so check the label and add extra heat gradually rather than assuming they are equally spicy.

Make a lighter broth: Replace up to half of the coconut milk with water or unsalted fish stock. The curry will be less creamy and the spices will taste more prominent. If using stock, choose one that is not strongly salted, then adjust the salt only after the fish and vegetables are cooked.

Cook it without a fish head: Use about 2 lb (900 g) bone-in fish steaks or thick fillets instead. Add thick steaks for the same approximate timing, but begin checking thinner fillets after 7–8 minutes. Fillets break more easily, so avoid turning them; keep them just submerged and check each thick piece for the required temperature.

Storage and Reheating

Refrigerate leftovers within 2 hours of cooking in a shallow, covered container. Keep the curry for 3–4 days in the refrigerator. The fish is delicate and can become drier with repeated heating, so store portions with plenty of broth and reheat only what you plan to eat. If the fish head is still in large pieces, remove the meat from the bones before storing if that makes later serving easier.

Reheat gently in a covered saucepan over low to medium-low heat, stirring the broth carefully around the fish, until the leftovers reach 165°F (74°C). Check the center of a substantial portion with a food thermometer. Add a splash of water if the sauce has thickened in the refrigerator, and avoid boiling it hard. You can freeze the curry in a sealed freezer-safe container for up to 2 months for best quality, though sweet potato and fish may soften after thawing. Thaw overnight in the refrigerator and reheat to 165°F (74°C).

Frequently Asked Questions

What does ubi mean in curry fish head ubi?
Ubi is a Malay and Indonesian word used for roots and tubers, and the specific meaning depends on the phrase and region. This recipe uses sweet potato, often called ubi keledek, because it is readily available and cooks well in the curry. If a recipe or market specifies another tuber, use that variety only after identifying it and adjusting its cooking time.

Can I make the curry without coconut milk?
Yes. Replace the coconut milk with water or mild, unsalted fish stock for a thinner, less creamy curry. You can also use half coconut milk and half stock to keep some richness while letting the tamarind and spices stand out more. Taste and adjust salt and sourness at the end because the broth will have a different balance.

How do I keep the fish head from falling apart?
Use a wide pot so the pieces fit without being stacked, keep the curry at a gentle simmer, and avoid frequent stirring. Add the fish only after the sweet potato is nearly tender, then spoon broth over the pieces instead of moving them around. Some softening near the fins and cheeks is normal, but the main sections should remain easy to lift out.

Can I prepare any part of it ahead?
You can peel and cut the sweet potato, onion, and eggplant up to a day ahead; keep them covered in the refrigerator, with cut sweet potato submerged in cold water to prevent browning, then drain and dry it before cooking. The aromatic onion-spice base can also be made earlier and refrigerated for up to 2 days. For the best texture, cook the fish shortly before serving rather than leaving it in the curry for a long hold.

What if I cannot find fish curry powder or curry leaves?
Use a good-quality Madras-style curry powder as a practical substitute for fish curry powder, starting with 2 tablespoons (16 g) and adding more to taste. It may be hotter or less aromatic, depending on the blend. Curry leaves add a distinctive citrusy, savory aroma, but they are optional here; leaving them out will change the fragrance without preventing the curry from working.

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