**Marinating the Chicken:** In a large bowl, combine the chicken cubes, yogurt, ginger-garlic paste, lemon juice, garam masala, turmeric powder, chili powder, cumin, and salt.
Mix well to ensure all the chicken pieces are coated evenly.
Cover the bowl and refrigerate for at least 30 minutes, or up to overnight. The longer it marinates, the more flavorful it will be!
**Making the Butter Chicken Sauce:** In a large skillet or pot, melt the butter over medium heat.
Add the chopped onion and cook until softened and translucent, about 5-7 minutes.
Add the minced garlic and grated ginger and cook for another minute, until fragrant.
Pour in the diced tomatoes and tomato sauce. Bring to a simmer, then reduce the heat and cook for 10 minutes, stirring occasionally. This helps the flavors meld together.
Stir in the heavy cream, water, sugar, garam masala, chili powder, and crushed kasuri methi.
Season with salt to taste. Remember, you can always add more, but you can't take it away!
Simmer for another 5-10 minutes, stirring occasionally, until the sauce has thickened slightly.
**Cooking the Chicken (Pan-Fried Option):** Heat a tablespoon of oil in a separate skillet over medium-high heat. Add the marinated chicken in a single layer (you may need to do this in batches) and cook until browned on all sides and cooked through, about 5-7 minutes per batch.
**Cooking the Chicken (Baked Option):** Preheat your oven to 400°F (200°C). Line a baking sheet with parchment paper. Spread the marinated chicken in a single layer on the baking sheet. Bake for 15-20 minutes, or until cooked through.
**Bringing It All Together:** Add the cooked chicken to the butter chicken sauce.
Stir well to coat the chicken evenly with the sauce.
Simmer for another 5 minutes to allow the flavors to meld together.
Garnish with fresh cilantro, if desired.
Serve hot with basmati rice, naan bread, or roti.