Add the chicken, along with all the ingredients for the marinate into a bowl and mix until well combined. Cover and put it into the fridge and leave the chicken to marinate for at least 3 hours or overnight.
Heat a pan on medium high heat and add the ghee. Once the ghee has melted and the pan has heated up, add the chicken and spread it all over the pan. Let it cook for 3-4 minutes without moving until the chicken develops golden brown spots. Then flip and cook on the other side for 3-4 minutes as well. Avoid overcooking the chicken to avoid dry and rubbery texture. Once cooked, take the chicken out from the pan (leaving the fat inside the pan) and keep aside.
Keep the pan back on to medium heat (without washing it). Add the onion and scrape the bottom of the pan to release the browned bits. Saute for 3 minutes.
Add the tomato puree, all the spices, salt and yogurt. Turn heat to low and saute until the sauce reduces to half (5-7 minutes). You can put a tilted lid on if the sauce splashes too much.
Once the sauce is reduced to half, add the cooked chicken along with the brown sugar, cream and kasuri methi. Mix to combine everything well. Cover and let cook for 2-3 minutes.
Turn off heat and transfer to a serving dish/bowl. Garnish with cream/beaten yogurt and kasuri methi/fresh coriander. Serve with naan or basmati rice.