An editorial recipe library. Every recipe is researched from many cited sources — see the provenance panel on each page. How we work →
ห่อหมกปลา

Hor Mok Pla (Thai Steamed Fish Curry)

/hɔ̀ː mòk plāː/ · also Ho Mok Pla
Hor mok pla is steamed fish curry mousse, not fish pieces in sauce. The dish lives or dies on the stirring: the mixture must thicken until it drags against the bowl and holds fish slices in suspension. Noni leaves give the old central Thai version its faint bitterness; basil or cabbage are common, but they change the dish’s backbone.
Hor Mok Pla — finished dish
Servings
Total time
90 min
Active time
65 min
Serves
6
Difficulty
chef
Heat

The dish in context

Hor mok pla is a central Thai steamed curry custard built from fish, coconut milk, egg, and red curry paste, traditionally steamed in banana-leaf cups or wrapped parcels. Thai academic and public-health sources repeatedly identify snakehead fish with noni leaves (ใบยอ) as the older household-standard pairing, while modern versions often use sea bass, Spanish mackerel, basil, cabbage, or a mix of greens. The defining technique is not the container; it is the long stirring that turns fish protein, coconut fat, egg, and curry paste into a sticky emulsion before steaming. Without that thickened base, the dish separates into curds and liquid curry.

Method 10 steps · 90 min

Make the banana-leaf cups

Soften banana leaves over a low flame or in hot water until pliable. Cut circles or squares and fold into 12 small cups, pinning the corners with toothpicks or staples kept above the food line. If using ramekins, line each with a leaf square.

Why it matters Cold banana leaf cracks. A cracked cup leaks coconut fat into the steamer and leaves the mousse dry at the edges.

Prepare the greens

Blanch noni leaves for 20 seconds, shock in cold water, squeeze dry, and cut into rough pieces. Divide the greens across the cups. If using cabbage, wilt it briefly and squeeze until no water drips when pressed.

Why it matters Wet greens are the quiet failure. They release water under the custard and create a loose layer that looks like broken curry.

Season the curry base

Hor Mok Pla step 3: Season the curry base

Whisk red curry paste with 300 ml coconut milk until smooth. Add eggs, fish sauce, palm sugar, and 80 ml coconut cream, then whisk until the sugar dissolves.

Why it matters Curry paste must disperse before the fish goes in. Clumps of paste stay harsh after steaming and leave red streaks in the custard.

Work the fish into a sticky emulsion

Add the sliced fish and stir hard in one direction for 12-15 minutes, adding the remaining 200 ml coconut milk in 3 additions. Stop only when the mixture thickens, turns glossy, and a spoon dragged through it leaves a slow-closing channel.

Why it matters This is the core technique. Stirring extracts salt-soluble fish proteins and binds them with coconut fat and egg; without that network, hor mok steams into fish curds floating in orange liquid.

Fold in aromatics

Hor Mok Pla step 5: Fold in aromatics

Fold in half of the sliced makrut lime leaf and the optional Thai basil. Keep the motion broad and brief; the base is already built.

Why it matters Makrut lime leaf needs to stay bright and green. Overworking after the leaves go in bruises them and pushes bitterness into the mousse.

Fill the cups

Spoon the fish mixture over the greens, filling each cup about 80 percent full. Press down lightly so no large air pockets remain, but do not pack it flat.

Why it matters The custard expands slightly as it sets. Overfilled cups spill; underfilled cups steam faster and become firm before the fish slices fully cook.

Steam until set

Hor Mok Pla step 7: Steam until set

Bring the steamer to a steady boil, then reduce to medium-high. Steam the cups for 15-18 minutes, until the surface is puffed, matte at the edges, and the center trembles as one piece rather than sloshing.

Why it matters Aggressive steam gives a cratered, tough surface. Weak steam leaves the center loose and extends the cook long enough for coconut fat to separate.

Thicken the coconut topping

While the cups steam, whisk 100 ml coconut cream with rice flour and salt in a small saucepan. Cook over low heat, stirring, until it thickens enough to coat the spoon in a white layer, 2-3 minutes.

Why it matters Raw coconut cream slides off the hot custard. A small amount of rice flour gives the topping body without turning it into paste.

Top and finish

Hor Mok Pla step 9: Top and finish

Spoon a small stripe or puddle of thick coconut cream onto each cup. Scatter with the remaining makrut lime leaf and red chili strips, then steam 2 minutes more to set the topping.

Why it matters The final steam fixes the garnish and warms the topping without dulling the lime-leaf aroma. Longer steaming after garnish turns the leaves dark and bitter.

Rest before serving

Rest the cups 5 minutes before serving with jasmine rice. The custard should release a little orange oil at the edge but should not weep watery liquid.

Why it matters Fresh from the steamer, the protein network is fragile. A short rest lets the mousse firm enough to spoon cleanly.

Common mistakes

  • {'mistake': 'Skipping the long stirring.', 'why_it_fails': 'The mixture will look combined while raw but separate during steaming. Hor mok needs a sticky fish-protein emulsion, not a stirred curry sauce.'}
  • {'mistake': 'Using low-fat coconut milk.', 'why_it_fails': 'The fat phase is part of the custard structure. Low-fat coconut milk gives a thin set and watery edges.'}
  • {'mistake': 'Adding wet greens to the cups.', 'why_it_fails': 'The trapped water rises into the mousse and makes the bottom layer loose.'}
  • {'mistake': 'Steaming over violent heat.', 'why_it_fails': 'Hard steam overcooks the edges before the center sets and leaves a pocked, rubbery surface.'}
  • {'mistake': 'Treating hor mok as a sweet curry.', 'why_it_fails': 'A little palm sugar rounds coconut and chile. Obvious sweetness flattens the fish and turns the dish toward dessert-custard logic.'}

What does not belong

  • {'item': 'cheese', 'reason': 'Cheese does not belong in hor mok pla. It breaks the coconut-curry emulsion and replaces the clean fish-and-herb profile with dairy salt.'}
  • {'item': 'cream or evaporated milk', 'reason': 'Dairy does not belong here. Coconut milk is structural and aromatic, not a generic creamy liquid.'}
  • {'item': 'curry powder', 'reason': 'Curry powder does not replace Thai red curry paste. Hor mok needs pounded fresh aromatics and chile paste, not dry colonial curry seasoning.'}
  • {'item': 'lemon juice or lime juice', 'reason': 'Sourness is not part of the central hor mok structure. Acid tightens the fish protein and makes the custard grainy.'}
  • {'item': 'flour-thickened white sauce', 'reason': 'Wheat roux has no role in this dish. The set comes from fish protein and egg; the topping uses a small amount of rice flour only.'}

Adaptations

Vegan Partial

Halal Partial

Gluten-free Partial

Dairy-free Partial

Shellfish-free Partial

Provenance

Sources surveyed68
Cultural authority8
Established press5
Community + blogs11
Individual voices44
Weighted score94.5
Review statusfounder-reviewed
Generated2026-05-16 04:01:58 UTC
Founder reviewed2026-05-16 04:18:12 UTC
Cultural accuracy8/10
Substitution safety7/10