The chicken curry that does not lose its macros to the sauce
Chicken thighs in a spiced tomato sauce at 34 g protein a serving. The coconut milk is where the calories hide, and Greek yogurt takes 138 of them out.

Adjust this recipe
Ingredients
- 600 g boneless chicken thighs, skinless, cut into 3 cm chunks
- 400 ml full-fat coconut milk, one 400 ml tin across four servings
- 400 g chopped tomatoes, tinned
- 200 g onion, finely chopped
- 4 clove garlic, crushed
- 20 g fresh ginger, grated
- 4 tsp curry powder, mild or hot, whichever you keep
- 2 tsp ground cumin
- 1 tsp ground turmeric
- 4 tsp neutral oil
- 20 g fresh coriander, roughly chopped, to finish
Method
- Heat the oil in a wide pan over a medium heat and cook the onion for about 8 minutes, until it is soft and just starting to colour at the edges. Wide matters more than deep here, because a curry this thin needs surface area to reduce.
- Add the garlic and ginger and cook for one minute, then add the curry powder, cumin and turmeric and stir them into the oil for 30 to 60 seconds. They should smell toasted and darken slightly. This is the step people skip, and skipping it is why a home curry tastes dusty rather than deep.
- Tip in the tomatoes and let them cook down for 5 minutes, stirring now and then, until the mixture looks like a paste rather than a sauce and the oil starts to separate at the edges. Rushing this leaves a raw tomato tang that no amount of simmering later will fix.
- Add the chicken and turn it through the paste so every piece is coated. Cook for 3 minutes, just to seal the outside. It does not need to brown.
- Pour in the coconut milk, bring it to a bare simmer and cook uncovered for 12 to 15 minutes, until the chicken is cooked through and the sauce coats a spoon. Keep it at a lazy bubble. A hard boil tightens the chicken and splits the coconut milk.
- Take the pan off the heat, taste it and add salt. Curry powder is usually unsalted, so this is where the whole dish either comes together or stays flat. Stir the coriander through at the very end.
Search for a high protein chicken curry and you get a dozen recipes that are genuinely high in protein and quietly higher in fat, because every one of them finishes with a tin of coconut milk.
That is not a trick. Coconut milk is what makes a curry taste like a curry. It is just worth knowing that the tin carries more calories than the chicken does.
Where the calories actually are
At the base recipe on this page, a serving is about 470 calories, 34 g of protein and 32 g of fat. The chicken accounts for roughly 180 of those calories. The coconut milk accounts for about 197.
So more than half the fat in a chicken curry has nothing to do with the chicken. That is the number worth having before you decide whether to change anything, and it is why “is chicken curry high in protein” has an annoying answer: yes, and it is usually high in fat at the same time.
Those figures are estimates, worked out from typical ingredient values rather than measured in a lab. The direction is reliable even where the exact number moves with the brand of coconut milk you buy.
Greek yogurt instead of coconut milk, and how not to split it
Swapping the coconut milk for the same volume of plain Greek yogurt is the single biggest change available here. It takes about 138 calories and 21 g of fat off a serving and adds about 8 g of protein, which turns a 470 calorie dinner into a 332 calorie one at 42 g of protein.
It also has one rule, and breaking it ruins the pan.
Yogurt splits if it boils. Take the pan off the heat first, let it stop bubbling for a full minute, then stir the yogurt in. Do not put it back on a flame afterwards. If the curry needs to be hotter, warm it gently before the yogurt goes in, not after.
A split curry cannot be rescued, so it is worth the extra minute. The same rule and the reason behind it are on sour cream substitutes, and the fat side of the same trade is on heavy cream substitutes.
If you want the dairy-free version and the lower fat, there is no swap that gives you both. Light coconut milk is the honest middle: less fat than the full tin, none of the protein the yogurt would have added.
Thighs or breast
The recipe is written with thighs because a curry gets forgotten about.
Breast carries about 4 g more protein and 2 g less fat per serving, and it goes from cooked to dry in a much narrower window. In a traybake that matters enormously. In a simmering sauce it matters less, because the liquid buys you a few minutes of grace, so breast is a more reasonable choice here than it is on the traybake.
If you use breast, add it at the coconut milk stage rather than searing it first, and start checking at 10 minutes.
Toast the spices, or do not bother
Ground spices need fat and heat to taste of anything. Thirty seconds in the oil before the liquid goes in is the difference between a curry that tastes cooked and one that tastes like curry powder stirred into tomatoes.
You will know it has worked because the kitchen smells different and the powder darkens slightly. If it smells acrid rather than toasted you have gone too far, which takes about another thirty seconds, so stay at the pan.
For meal prep
This reheats better than most chicken dishes, because the sauce protects the meat. Cook it, cool it quickly, and it keeps for three days in the fridge.
Make it with coconut milk if you are batching it. The yogurt version is better on the night and worse on day three, since reheating is exactly the situation where yogurt splits and you will not be standing over it with a pan off the heat. If you want the yogurt macros in a meal prep, cook the base without any dairy, portion it, and stir a spoonful of yogurt into each bowl as you eat it.
In a slow cooker
It works, with one change. Give the onion, spices and tomatoes their five minutes in a pan first, then move everything to the slow cooker with the chicken and cook on low for about 4 hours.
Do not put the coconut milk in at the start, and never the yogurt. Both go in during the last fifteen minutes, and the yogurt goes in with the heat switched off entirely.
What the swaps do
The two toggles above the ingredients are grouped by goal rather than by ingredient, so this is what each one actually gives you.
| Toggle | Calories | Protein | Fat |
|---|---|---|---|
| Neither, as written | 470 | 34 g | 32 g |
| More protein, yogurt for coconut milk | 332 | 42 g | 11 g |
| Less fat, that plus breast for thighs | 332 | 46 g | 9 g |
Every figure is an estimate per serving at four servings. Neither swap compounds with the other, so applying both is an addition rather than a multiplication.
The version worth cooking depends on the night. The full-fat one is better food. The yogurt one is the one that fits a target, and at 46 g of protein for 332 calories it is not a compromise so much as a different dinner.