In a medium bowl, combine the yogurt, lemon juice, garam masala, turmeric, cumin, chili powder, and salt. Add the chicken pieces and stir until evenly coated. Cover and refrigerate for at least 30 minutes or up to overnight to marinate.
Melt 2 tablespoons of butter in a large skillet or Dutch oven over medium-high heat. Add the marinated chicken and cook for 5-7 minutes, turning occasionally, until browned on all sides. Transfer chicken to a clean plate and set aside.
Reduce heat to medium and melt the remaining 2 tablespoons of butter in the same skillet. Add the chopped onion and cook for 5 minutes, stirring occasionally, until softened and translucent.
Add the minced garlic and grated ginger to the skillet and cook for 1 minute until fragrant, stirring constantly to prevent burning.
Pour in the tomato sauce and bring to a simmer. Cook for 3-5 minutes until the sauce thickens slightly and darkens in color.
Return the browned chicken to the skillet along with any accumulated juices. Stir in the heavy cream and sugar. Reduce heat to low and simmer gently for 10-15 minutes, stirring occasionally, until the chicken is cooked through and the sauce is rich and creamy.
Remove from heat and stir in the chopped cilantro. Serve immediately over rice or with naan bread.