Combine all ingredients except chicken in a bowl and mix. Add chicken and turn well to coat. Cover with cling wrap and leave in fridge to marinate overnight (3 hours minimum).
Thread the chicken pieces onto skewers (soaked in water if wooden), brush with a little vegetable oil and grill or barbecue both sides until slightly charred. Remove from the skewers and allow to cool.
Heat the ghee in a wok. When the ghee has melted, add the onions, garlic, ginger and salt.
Cook, stirring constantly to ensure it doesn’t burn, until the ginger is starting to turn golden, about 5 minutes.
Reduce the heat to medium. Add the paprika, and cook for 2 minutes.
Add the turmeric, garam masala, ground coriander seeds, ground cumin seeds, cardamom pods, cayenne pepper, and cook a further 2 minutes, stirring.
Add the tomato puree, liquidised tomatoes and water, and mix. Bring to a simmer, then cover and reduce heat to low.
Simmer for 15 minutes, stirring occasionally.
Allow the curry to cool then add to a blender and blend until smooth.
Return curry to the wok. Add the yoghurt, sugar and ghee. Stir to melt the ghee.
Add the chicken to the wok and stir. Simmer for a few minutes until the chicken is cooked through.