1. Marinate the chicken with yogurt, lemon juice, and a pinch of salt. Let it sit for at least 30 minutes.
2. Heat butter in a large skillet over medium heat. Add onions, garlic, and ginger. Sauté until golden brown.
3. Add garam masala, cumin, coriander, turmeric, and chili powder. Cook for another 2 minutes.
4. Stir in tomato puree and cook for 10 minutes, stirring occasionally.
5. Add marinated chicken and cook until the chicken is fully cooked, about 15-20 minutes.
6. Pour in heavy cream and simmer for another 5 minutes. Season with salt and pepper to taste.
7. Serve hot with rice or naan.