Sri Lankan Soya Meat Curry with Coconut Milk and Spices

Updated November 4, 2026

Total time
1 hr 12 min
prep 30 min · cook 42 min
Serves
4
portions as written
Safe temperature (USDA)
165°F / 74°C
check the thickest piece

Jump to recipe

Sri Lankan Soya Meat Curry with Coconut Milk and Spices

Sri Lankan soya meat curry is a warmly spiced curry of rehydrated soy chunks simmered with onion, tomato, curry spices, and coconut milk. The chunks soak up the savory, gently creamy sauce, making this a satisfying plant-based main to serve with rice; family and regional versions vary in heat, spices, and thickness.

Ingredients

  • 7 oz (200 g) dried soya meat chunks or plain textured vegetable protein chunks
  • 4 cups (950 ml) boiling water, for rehydrating the chunks
  • 1 tsp (5 g) fine salt, divided, plus more to taste
  • 2 tbsp (30 ml) neutral oil or coconut oil
  • 1 tsp (2 g) black mustard seeds
  • 10 fresh curry leaves, or 1 small bay leaf as a substitute
  • 1 small piece pandan leaf, about 4 in (10 cm), tied in a knot, optional
  • 1 medium yellow or red onion, about 1 cup chopped (150 g)
  • 3 garlic cloves, finely chopped or grated (about 1 tbsp / 9 g)
  • 1 tbsp (15 g) finely grated fresh ginger
  • 2 tbsp (12 g) Sri Lankan roasted curry powder
  • 1 tsp (2 g) ground turmeric
  • ½ tsp (1 g) hot chili powder, or less to taste
  • 1 medium tomato, chopped (about 1 cup / 180 g)
  • 1 cup (240 ml) canned coconut milk, well stirred
  • 1 cup (240 ml) water
  • 1 tsp (5 g) tamarind paste, or 1 tbsp (15 ml) lime juice to finish
  • 2 tbsp (8 g) chopped cilantro, optional, for serving

Instructions

  1. Put the dried soya chunks in a heatproof bowl and pour over the 4 cups (950 ml) boiling water. Stir in ½ tsp (2.5 g) of the salt and leave for 10 minutes, or follow the package directions if they call for a different soaking time. Drain thoroughly, rinse briefly under cool water if the package recommends it, then squeeze the chunks firmly in small handfuls to remove excess water. This step matters: well-drained chunks take on the curry sauce rather than diluting it.

  2. While the chunks soak, chop the onion and tomato, prepare the garlic and ginger, and measure the spices. Set a large, heavy-bottomed saucepan or Dutch oven over medium heat and add the oil. Once it is hot, add the mustard seeds. When they begin to pop, add the curry leaves and pandan, if using, and stir for about 30 seconds. Take care as damp curry leaves can spit in hot oil. If using a bay leaf instead, add it now.

  3. Add the onion and cook for 8 minutes, stirring regularly, until softened and lightly golden at the edges. A little color gives the sauce a deeper, sweeter base; avoid rushing this step over high heat, which can brown the onion unevenly. Add the garlic and ginger and stir for 1 minute, until fragrant.

  4. Stir in the roasted curry powder, turmeric, and chili powder for about 30 seconds. Add the chopped tomato and the remaining ½ tsp (2.5 g) salt. Cook for about 4 minutes, stirring and pressing the tomato with the spoon, until it softens and begins to break down. If the spices catch on the bottom, add a spoonful of the measured water and scrape up the browned bits.

  5. Add the drained soy chunks and stir for 2 minutes so the spice and tomato mixture coats them evenly. Pour in the coconut milk and the remaining 1 cup (240 ml) water. Stir, bring the curry just to a gentle simmer, then lower the heat and cover the pan.

  6. Simmer gently, covered, for 18 minutes, stirring once or twice so nothing sticks. Remove the lid and simmer for another 4 minutes to thicken the sauce. The chunks should be tender and seasoned through, and the sauce should cling to them while still being loose enough to spoon over rice. If it becomes thicker than you like, add water a few tablespoons at a time; if it is thin, simmer uncovered for a little longer.

  7. Stir in the tamarind paste, then taste and adjust the salt and chili. If using lime juice instead, add it after taking the pan off the heat so its fresh flavor stays bright. Remove the pandan and bay leaf before serving. Scatter with cilantro if desired.

Tips

  • Use plain chunks when possible. Dried soya meat is sold in different sizes and may be labeled soya chunks, soy chunks, or textured vegetable protein. Plain, unseasoned chunks let the curry’s spices lead. If your package includes a seasoning sachet, leave it out or taste before adding extra salt.

  • Know your curry powder. Sri Lankan roasted curry powder gives the dish a toasted, earthy aroma. If it is hard to find, use a good-quality Indian curry powder in the same amount; the result will still be flavorful but may taste less dark and roasted. Curry powders vary in heat and salt, so check the label and adjust the chili and salt at the end.

  • Make the sauce your preferred consistency. Coconut milk brands vary, and some are thicker than others. For a richer curry, use full-fat coconut milk; for a lighter sauce, replace up to half with water. Keep the heat low once the coconut milk is in, since a hard boil can make the sauce look separated or oily.

  • Use aromatics flexibly. Curry leaves and pandan add a characteristic fragrance but can be difficult to find outside South Asian groceries. Bay leaf is a practical stand-in for pandan or curry leaves, though it gives a simpler, less citrusy aroma. Remove whole leaves before serving, and do not substitute extra ground spice for fresh curry leaves.

Serving Suggestions

Serve the curry hot over steamed basmati or another long-grain rice, with enough sauce to flavor each spoonful. Sri Lankan-style red rice is another good choice if available. For a more substantial plate, add a mild vegetable side such as green beans, cabbage, or sautéed greens; a crisp cucumber salad can balance the richness of the coconut milk and the warmth of the spices.

Flatbread, roti, or paratha works well for scooping up the sauce. If you are serving several people with different heat preferences, keep the curry moderately spiced and offer chili sambol or sliced fresh chili separately. A squeeze of lime at the table is useful for anyone who likes a sharper finish, while extra cilantro is an easy fresh garnish. If the curry is part of a larger meal, serve it alongside another vegetable dish and rice rather than adding more rich sides.

Variations

Add vegetables: Stir in 1 cup (130 g) diced carrot with the coconut milk and water, or add 1½ cups (200 g) cauliflower florets for the covered simmer. For tender greens, fold in 2 cups (60 g) spinach during the final 2 minutes. If adding vegetables that release water, uncover the pan for a few extra minutes at the end so the sauce reaches the thickness you want.

Adjust the heat: Use ¼ tsp chili powder for a gentle curry or increase it to 1 tsp for a hotter version. Chili powders differ considerably, so it is safer to start modestly and add more after tasting. A sliced green chili can be cooked with the onion for a fresher, more direct heat.

Make it tangier or thicker: Tamarind gives a rounded, fruity sourness; lime juice tastes brighter and should be stirred in at the end. For a thicker curry, reduce the water to ½ cup (120 ml), then add more only if needed. For a looser curry to serve with rice, keep the full amount of water and add a splash more during simmering if the chunks absorb most of the sauce.

Try a different protein: Firm tofu can replace the soy chunks, though it does not need rehydrating and has a softer texture. Pat 14 oz (400 g) tofu dry, cut it into cubes, and brown it in the oil before cooking the mustard seeds and onion; set it aside and return it to the pan with the coconut milk. The finished dish will be less chewy and the cooking time may be a few minutes shorter.

Storage and Reheating

Cool leftovers promptly and refrigerate them within 2 hours of cooking in a covered, shallow container. The curry keeps for 3 to 4 days in the refrigerator. The soy chunks continue to absorb sauce as they sit, so stir in a little water before reheating if the curry has become very thick. Reheat on the stovetop over medium-low heat, stirring occasionally, until steaming hot throughout; USDA FSIS guidance is to reheat leftovers to 165°F (74°C). In a microwave, cover loosely, heat in short intervals, and stir between intervals so the center warms evenly.

For longer storage, freeze the cooled curry in meal-size airtight containers for up to 2 months for best quality. Thaw it overnight in the refrigerator, then reheat as above; add a small splash of water if the sauce has thickened. Coconut-based sauces can separate slightly after freezing, but stirring well during gentle reheating usually brings them back together. Do not leave cooked curry at room temperature for more than 2 hours.

Frequently Asked Questions

What is Sri Lankan soya meat?
Soya meat is a common name for dried, textured soy protein sold in chunks or pieces. It is rehydrated before cooking and used as a plant-based substitute for meat. The curry seasoning is not fixed: cooks may vary the spice blend, coconut milk, chili, and souring ingredient according to taste and what is available.

Do I have to squeeze the soy chunks after soaking?
Yes, draining and squeezing them helps remove excess water and makes room for the chunks to absorb the seasoned sauce. They should be moist and pliable, not bone-dry. If they are still firm in the middle after the package’s suggested soak, give them a few more minutes in hot water before draining.

Can I make this curry without coconut milk?
You can replace the coconut milk with 1 cup (240 ml) more water or unsweetened, unflavored plant milk, but the sauce will be thinner and less creamy. If using plant milk, choose one without vanilla or added sugar. Simmer the curry uncovered until it reaches a consistency you like, and taste again because a less rich sauce may need a little extra salt or tamarind.

Is Sri Lankan curry powder the same as curry powder from other cuisines?
No single curry powder is universal. Sri Lankan roasted curry powder is a toasted spice blend, and recipes for it differ; other curry powders can contain different spices and may be milder, hotter, or less roasted in flavor. Use the substitute listed in the recipe if needed, then adjust the seasoning after simmering rather than assuming every blend has the same strength.

Can I prepare the curry ahead?
Yes. The curry can be cooked a day ahead and refrigerated once it has cooled enough to store safely. Its flavor settles as it rests, though the soy chunks also absorb more liquid, so loosen it with water while reheating. Reheat leftovers to 165°F (74°C) and avoid repeatedly cooling and reheating the whole pot; warm only the portion you plan to serve.

Why is my curry too spicy, sour, or salty?
If it is too spicy, stir in a little more coconut milk or water and serve it with plain rice. If it is too sour, add coconut milk a spoonful at a time; if too salty, dilute with water or unsalted coconut milk and serve with extra rice. Add sour ingredients gradually next time, since tamarind pastes vary in strength and a little can go a long way.

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