Instructions:
1. In a bowl, combine all the marinade ingredients - yogurt, lemon juice, garam masala, turmeric, chili powder, cumin powder, paprika, grated ginger, minced garlic, and salt. Add the chicken pieces and coat them well with the marinade. Cover the bowl and let it marinate for at least 30 minutes, or ideally, refrigerate it for a few hours or overnight.
2. After marinating, preheat your oven to 400°F (200°C). Place the marinated chicken pieces on a baking sheet lined with parchment paper. Bake for about 15-20 minutes or until the chicken is cooked through. You can also grill the chicken or cook it on a stovetop if you prefer.
3. While the chicken is cooking, prepare the butter chicken sauce. In a large skillet or saucepan, heat the ghee or butter over medium heat. Add the finely chopped onion and sauté until it becomes translucent.
4. Add the minced garlic and grated ginger to the skillet and cook for another minute until the raw smell disappears.
5. Stir in the garam masala, ground coriander, ground cumin, and chili powder. Cook the spices for a couple of minutes until they release their aroma.
6. Pour in the crushed tomatoes and bring the mixture to a gentle simmer. Cook the sauce for about 10-15 minutes, allowing it to thicken and the flavors to meld together.
7. Once the chicken is cooked, add it to the sauce along with any juices accumulated on the baking sheet. If you prefer a smoother sauce, you can blend the sauce at this point using an immersion blender or in a regular blender (be careful while blending hot liquids).
8. Stir in the heavy cream or coconut milk and let the butter chicken simmer for another 5 minutes. If using kasuri methi, crush it between your fingers and add it to the sauce for extra flavor.
9. Taste the sauce and add salt as needed. If you prefer a milder taste, you can add a bit of sugar or honey to balance the flavors.
10. Serve the butter chicken over steamed rice or with naan or roti. Garnish with fresh cilantro leaves.