Dry roast the whole spices on medium low heat just until the flavor comes out, around 30-40 seconds. Grind the spices. To the masala add ½ tsp ginger powder . Keep the masala covered till you use.
In a large pan heat the oil and ghee. Once hot, add the sliced onions and cook the onions till translucent and lightly brown.
Add 1 tbsp each ginger and garlic paste. Saute for 30 seconds.
Add the chopped tomatoes. Cover and cook till the tomatoes are mushy.
Once tomatoes look mushy and pureed and oil separates add red chilli powder, turmeric powder, salt and green chillies and cook for another few seconds.
Add the chicken pieces and coat them well.
Cover and let the chicken pieces brown, for a few minutes.
Add the freshly ground spices and 2-3 tbsp of freshly chopped cilantro. Cook covered for another 4-5 minutes before adding water. The chicken will release its own water, so adjust the water required in the next step according to how much curry you want.
Add 3 cups of water and bring to a boil covered, around 10 minutes.