In a bowl, mix yogurt, lemon juice, turmeric, chili powder, garam masala, cumin, salt, and ginger-garlic paste. Add chicken pieces and coat well. Let marinate for at least 30 minutes or overnight for best results.
Heat 1 tbsp oil in a pan over medium heat. Add marinated chicken and cook for 5-7 minutes until golden brown. Remove from the pan and set aside.
In the same pan, melt butter and sauté onions until soft. Add garlic and ginger, cooking for 1 minute. Stir in tomato puree, paprika, garam masala, cumin, and salt. Let it simmer for 10 minutes.
Add the cooked chicken to the sauce along with heavy cream and water. Simmer for another 10 minutes. Garnish with fresh cilantro and serve hot with rice or naan.