Take the chicken out of the fridge 30-45 minutes before cooking to bring it to room temperature. Preheat the oven to 170°C/150°C Fan/Gas 3.
Toast the cumin, coriander and cardamom seeds in a large heavy-based pan for 3-4 minutes until fragrant and starting to crackle. Tip the seeds out onto a plate and leave to cool for a minute, then grind to a coarse powder using a pestle and mortar. Set aside.
You will need to brown the chicken in 2 or 3 batches. Add a little oil or fat to the pan, still over a medium heat. When the pan is hot, add several chicken pieces, skin side down. Fry, turning occasionally and seasoning with a little salt and pepper as you go, until nicely browned all over. Remove and place in a fairly deep ovenproof dish or roasting tray. Repeat to colour the rest of the chicken pieces. Set aside.
Now add a little more oil or fat to the pan, followed by the onion, ginger, turmeric, garlic, crushed toasted spices, garam masala (or curry powder) and chilli flakes. Sweat gently for 15-20 minutes over a medium-low heat, stirring regularly, until the onions are very soft but not browned.
Add the tinned tomatoes, crushing them with your hands as they go in (and picking out any stalky ends or bits of skin). Turn up the heat and cook for a few minutes, stirring occasionally to reduce and thicken slightly. Add the coconut milk, ground almonds and some salt and pepper. Give it a good stir and gently bring up to a simmer.
Pour the creamy tomato mixture over the chicken in the roasting dish or tray. Nudge the chicken pieces around to ensure they are all coated in the sauce and then cook in the oven for 20 minutes. Take out the dish or tray and turn the chicken pieces then return to the oven for 10 minutes.
Serve the curry scattered with chopped coriander leaves if you have some to hand, and with brown rice and/or raita on the side if you like.
