Crispy, flaky pastry encases a warmly spiced sardine and potato filling in this beloved Malaysian teatime snack. Sold by street vendors across Kuala Lumpur and Penang, these golden half-moon puffs balance aromatic curry powder with creamy mashed potato and tender fish. They are deeply satisfying fresh from the oil, when the crust shatters to reveal a savory, chile-kissed interior.
Nutrition Facts
Per serving (estimated)
- 420 kcalCalories
- 24 gFat
- 7 gSaturated Fat
- 38 gCarbs
- 3 gFiber
- 3 gSugar
- 14 gProtein
- 580 mgSodium
- 340 mgPotassium
- 110 mgCalcium
- 3 mgIron
- 9 mgVitamin C
- 75 mcgVitamin A
Ingredients
For the pastry dough
- 2 1/2 cups (320 g) all-purpose flour, sifted
- 1/2 cup (115 g) cold unsalted butter, cubed
- 1/2 cup (115 g) cold margarine or shortening
- 1/2 teaspoon fine sea salt
- 1/3 to 1/2 cup (80 to 120 ml) ice-cold water
- 1 teaspoon white vinegar
For the sardine-potato filling
- 2 tablespoons vegetable oil
- 1 medium yellow onion, finely chopped
- 2 cloves garlic, minced
- 1 fresh red chile, finely sliced
- 1 tablespoon Malaysian meat curry powder
- 1/2 teaspoon turmeric powder
- 1/2 teaspoon ground coriander
- 1 large russet potato (about 200 g), peeled and diced into 1/4-inch cubes
- 1 can (425 g) sardines in tomato sauce, drained and lightly flaked
- 1/2 teaspoon sugar
- 1/4 teaspoon salt, plus more to taste
- 2 tablespoons chopped cilantro or Chinese parsley
- 1 hard-boiled egg, peeled and chopped (optional)
For assembly and frying
- 1 large egg, beaten with 1 tablespoon water (egg wash)
- 2 cups (480 ml) neutral oil, for deep-frying
Directions
- Make the dough: pulse flour, salt, butter, and margarine in a food processor until the mixture looks like coarse crumbs. Drizzle in the vinegar and just enough ice water to bring the dough together; do not overwork. Shape into a disc, wrap in plastic, and chill for 20 minutes.
- Cook the filling: heat oil in a skillet over medium heat and sauté onion until translucent, about 3 minutes. Add garlic, chile, curry powder, turmeric, and coriander; toast 30 seconds until fragrant.
- Stir in the diced potato and 1/4 cup water, cover, and simmer 8 to 10 minutes until the potato is fork-tender. Mash roughly in the pan, then fold in the drained sardines, sugar, salt, cilantro, and chopped egg. Cool completely before assembling.
- Roll the dough on a lightly floured surface to about 1/8-inch thickness. Cut into 4-inch rounds using a cutter or small bowl; reroll scraps once.
- Spoon about 1 1/2 tablespoons of cooled filling onto one half of each round, brush the edges with egg wash, then fold over to form a half moon. Press the edges firmly with a fork to seal, then crimp decoratively.
- Heat the oil in a deep, heavy pot to 175°C (350°F). Fry 3 to 4 puffs at a time, turning occasionally, until deep golden brown and crisp, 4 to 5 minutes per batch. Drain on a wire rack.
- Serve warm with sliced cucumber and sweet chili sauce or a wedge of lime.
- Repeat frying for remaining puffs, letting the oil return to temperature between batches. Makes 12 puffs.
Cook’s Notes
- Keep all pastry ingredients thoroughly chilled; warm butter is the enemy of flaky layers and will cause the dough to shrink during frying.
- For a shortcut, substitute store-bought spring-roll or roti wrappers, though the classic laminated dough gives a far flakier crust.
- Bake at 200°C (400°F) for 22 to 25 minutes if you prefer to skip frying; brush generously with egg wash for color.
- Drain the sardines well and flake them gently so the filling stays cohesive rather than mushy.
- Test one puff first to check seasoning and oil temperature; if it browns too fast, lower the heat to prevent a raw interior.
More Malaysia Recipes You’ll Love
Craving more flavors from Malaysia? Try these traditional recipes:









