In a large bowl, combine the yogurt, lemon juice, cumin, coriander, garam masala, turmeric, chili powder, and salt. Add the chicken pieces, mix well, and marinate for at least 1 hour, or preferably overnight in the refrigerator for deeper 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 minced garlic and ginger, cooking for an additional 1-2 minutes until fragrant.
Add the marinated chicken (including the marinade) to the skillet. Cook for about 10 minutes, stirring occasionally, until the chicken is browned and cooked through.
Pour in the tomato puree and bring to a simmer. Cook for 10 minutes, allowing the flavors to meld.
Reduce the heat to low and stir in the heavy cream and sugar. Simmer for another 5 minutes, adjusting seasoning if necessary.
Serve hot, garnished with fresh cilantro, alongside basmati rice or naan.