In a mixing bowl, combine all the marinade ingredients: yogurt, lemon juice, ginger paste, garlic paste, red chili powder, turmeric powder, garam masala, and salt. Mix well.
Add the chicken pieces to the marinade, ensuring they are well coated. Cover and refrigerate for at least 30 minutes or longer for best results.
While the chicken is marinating, you can start preparing the sauce. In a large skillet or pan, melt the butter over medium heat.
Add the chopped onions and sauté until they become translucent and slightly browned.
Add the ginger and garlic paste to the onions and sauté for another 2-3 minutes until the raw smell disappears.
Stir in the cumin powder, coriander powder, and paprika or Kashmiri red chili powder. Cook for a minute or two until the spices are fragrant.
Pour in the tomato puree and cook for about 5-7 minutes, stirring occasionally, until the sauce thickens and the oil starts to separate from it.
Reduce the heat to low and add the marinated chicken along with its marinade to the sauce. Cook for about 10-15 minutes, stirring occasionally, until the chicken is fully cooked and tender.
Pour in the heavy cream, and stir well to combine. If you prefer a slightly sweeter taste, you can add a pinch of sugar at this stage. Adjust salt and spice levels according to your taste.
Simmer the butter chicken for an additional 5-7 minutes on low heat, allowing the flavors to meld together.
Once the butter chicken is ready, serve it hot over cooked rice.
Garnish with fresh coriander leaves before serving.Enjoy your homemade butter chicken with rice!