- 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.