In a mixing bowl, combine the yogurt, lemon juice, ginger paste, garlic paste, red chili powder, turmeric powder, and salt to prepare the marinade.
Add the chicken pieces to the marinade and coat them well. Allow the chicken to marinate for at least 1 hour or overnight in the refrigerator for enhanced flavor.
In a skillet or frying pan, melt the butter over medium heat. Add the finely chopped onions and sauté until they turn golden brown.
Add the ginger paste and garlic paste to the skillet and cook for a minute until the raw aroma dissipates.
Sprinkle the garam masala, cumin powder, coriander powder, and paprika into the skillet. Stir well to combine the spices with the onion mixture.
Pour in the tomato puree and cook for 2-3 minutes, allowing the flavors to meld together.
Reduce the heat to low and slowly add the marinated chicken pieces to the skillet, discarding any excess marinade.
Stir well to coat the chicken with the sauce. Cover the skillet and simmer for about 15-20 minutes or until the chicken is cooked through and tender.
Pour in the heavy cream and sugar (if desired) and simmer for an additional 2-3 minutes, stirring gently.
Adjust the salt and spices according to your taste preferences. If the sauce is too thick, you can add a splash of water to achieve the desired consistency. Garnish with freshly chopped coriander leaves.