In a large bowl, mix yogurt, lemon juice, cumin, garam masala, turmeric, chili powder, and salt. Add the chicken and coat well. Marinate for at least 30 minutes or overnight.
In a large skillet or Dutch oven, melt butter over medium heat. Add onion and sauté until soft, about 5 minutes.
Stir in garlic, ginger, coriander, and paprika. Cook for 1 minute until fragrant.
Add the marinated chicken and cook until browned on all sides.
Pour in the tomato sauce, bring to a simmer, and cook for 15-20 minutes, until chicken is fully cooked.
Stir in heavy cream and simmer for another 5 minutes until the sauce is thickened.
Garnish with chopped cilantro and serve with rice or naan.