In a bowl, mix yogurt, lemon juice, garam masala, turmeric, cumin, chili powder, and salt.
Add chicken to the marinade, coat well, and refrigerate for at least 30 minutes.
In a large skillet, melt butter over medium heat. Add onion and sauté until golden.
Add garlic and ginger, cooking for another minute until fragrant.
Add marinated chicken and cook until browned on all sides.
Pour in tomato puree and let simmer for 15 minutes.
Stir in heavy cream and cook for another 5–10 minutes until thick and creamy.
Garnish with fresh cilantro and serve with warm naan or rice.