Wash the chicken cubes.
Mix all the marination ingredients in a large bowl.
Add the chicken cubes, mix well and set aside for at least 30 mins. If you can leave it overnight all the more better.
To cook the chicken, heat 3 tablespoons of oil in a fry pan.
Working in batches, cook all the chicken pieces to a golden brown.
To prepare the gravy, heat 2 tablespoons of ghee in a heavy bottom wok or pan.
Add the chopped onion.
Continue cooking the onion till it turns translucent.
Add the ginger garlic paste and cook for another 2 minutes.
Add the chilli powder, cumin powder and garam masala powder. Cook for a minute.
Mix in the tomato puree and half a cup of water. Bring to a boil.
Stir in the fresh cream and mix well to a get an even consistency.
Allow the gravy to come to a boil.
Keeping the flame on a low setting, add salt to the boiling gravy.
Add the cooked chicken pieces.
Mix well.
Give the gravy one last boil and turn off the flame.
Garnish with fresh coriander leaves and serve hot with rice, parathas or naans.