Add oil to a hot pan. Add onion and saute till it becomes soft and translucent. Then, add ginger and garlic saute for a while.
Add tomato and season with salt. Cook till the tomato becomes mushy.
Now, keep this aside and wait till it cools down to room temperature.
Grind the onion-tomato mixture into a smooth paste with little water.
Add oil in a hot pot, add cardamom, cinnamon, bay leaf, cloves and saute for a while.
Now, add the ground masala paste and cook for 3 more minutes.
Add coriander powder, turmeric powder, chilli powder, cumin powder, and garam masala. Fry till the masala blends together with the powders.
Add the chicken pieces, potatoes and mix well. Cook covered in low heat for 3 minutes. There is no need to add water. The chicken itself will release water to cook.
Now, add enough water for the curry. Add salt. Add chopped cilantro leaves and cook covered until the chicken is tender.