Crush the cardamom pods and remove the seeds. Place a small frying pan over a medium heat and add the cardamom seeds and fennel seeds. Heat, stirring frequently, until fragrant for about 2-3 minutes. Leave to cool slightly, then add to a pestle and mortar with the ginger and garlic. Grind together until a paste forms.
Add the yogurt to a large bowl with the spice paste and a pinch of salt. Stir to combine. Add the chicken and stir until completely covered. Cover and leave in the fridge to marinate for at least 2 hours.
Preheat the oven to 180°C/fan 160°C/gas mark 4. Heat the oil over a medium/high heat in a large, deep oven-proof pan. Remove the chicken from the marinade, scraping off as much as possible but reserving the marinade, and carefully add the chicken to the pan. Fry for 6 minutes on one side until well browned, then turn over and cook for an additional 3 minutes. Using tongs, remove the chicken from the pan and transfer to a plate. Set aside.
While the pan is still hot, add the onions, cumin seeds, cloves and cinnamon stick. Reduce the heat to low and sauté the onions and spices until the onions are golden for about 6-7 minutes. Add the turmeric, mace and chilli powder and cook for a further 1 minute. Add the stock to the pan, using a wooden spoon to scrap up all the flavour at the bottom. Leave to simmer for 2-3 minutes.
Add the tomatoes to the pan along with the yogurt left over from the marinade and two bay leaves, stirring until combined. Nestle the chicken on top and pour over any juices, then transfer to the oven, uncovered, for 40-45 minutes until the meat is cooked through.