Place all the ingredients for the marinade, with the exception of the chicken, into a large bowl. Mix well to combine thoroughly before adding the chicken pieces to the marinade. Stir through to ensure all the chicken is covered in this thick yogurt sauce.
Cover the bowl and place it in the fridge for at least 4 hours, but ideally overnight.
Place the onion, garlic, root ginger and chilli into a food processor and blitz to a smooth paste.
Meanwhile melt 40g of the butter into a large frying pan over a medium heat and add the cardamon pods, paprika, garam masala and salt. Fry the spices gently for a minute until they start to release their aroma.
Add the blitzed up onion mixture to the frying pan and saute gently for 10 minutes. Stir in the tomatoes and the stock and simmer the sauce gently for 20 minutes.
Meanwhile heat the grill. Take the chicken out of the fridge and thread the chicken pieces onto skewers, before placing the skewers onto a large grill pan that has been lined with kitchen foil. Brush over some of the marinade and place under the grill and cook for 15 minutes, turning the chicken halfway through. The chicken pieces should be cooked through and look a little charred around the edges.
Any excess marinade can be added to the curry sauce, along with any cooking juices from the bottom of the grill pan.
Remove the chicken pieces from the skewers and stir through the curry sauce.
Add the remaining butter and stir until melted before adding the cream and coriander leaves. Serve immediately.