Marinate the chicken pieces with the ingredients listed under "for marinade". This step is optional. You can also directly add un-marinated chicken pieces to the gravy. A lot of recipes require the chicken to be cooked ahead. But cooking the chicken directly in the sauce makes it more soft and juicy.
Heat oil In a thick bottomed and deep pan or pressure cooker and temper with whole spices.
When they start to splutter, add chopped onions. If you want, you can add a little salt at this stage to help the onions cook faster. Adding a little sugar instead will make it brown faster. Saute the onions until translucent/browned.
Add garlic and/or ginger and cook for 2-3 more minutes.
Now add the powdered spices. You can dissolve the spices in a little bit of water to ensure they don't stick to the bottom of the pan.
Saute everything over medium heat for 2-3 minutes or until the raw spice smell dissipates.
Now add fresh tomatoes or tomato puree/paste and cook for 2-3 more minutes.
Season with salt and sugar.
Add the chicken pieces and potatoes. Stir to coat everything in the gravy. Pour 2 cups of water. Bring everything to a boil. Lower heat, cover and let cook for 10-12 minutes. If you are using a pressure cooker, close the lid and cook until two whistles are given out. You will know the curry is ready when the oil separates from the gravy.
Add garam masala, stir, turn off the heat and add chopped cilantro.
Serve with naan, roti, parantha or steamed rice.