In a large bowl, combine yogurt, lemon juice, ginger-garlic paste, cumin, coriander, turmeric, garam masala, chili powder, and salt. Mix well to create a marinade.
Add the chicken thighs to the marinade, ensuring they are fully coated. Cover the bowl and refrigerate for at least 1 hour, or overnight for the best flavor.
In a large skillet or saucepan, melt the butter over medium heat. Add the chopped onion and sauté until golden brown, about 5-7 minutes.
Stir in the marinated chicken along with the marinade. Cook for about 5 minutes, stirring occasionally, until the chicken is browned.
Pour in the tomato puree and bring to a simmer. Cover and cook for 15-20 minutes, or until the chicken is fully cooked and tender.
Reduce the heat to low, then stir in the heavy cream. Simmer for an additional 5 minutes, allowing the flavors to meld.
Taste and adjust seasoning if necessary. Garnish with chopped cilantro before serving.