Marinate the Chicken: In a medium bowl, combine the chicken pieces with yogurt, turmeric powder, chili powder, and salt. Mix well to coat the chicken, cover, and let it marinate for at least 15 minutes (or up to 1 hour in the refrigerator for deeper flavor).
Sauté Aromatics: In a large pot or Dutch oven, heat the ghee or oil over medium heat. Add the finely chopped onion and sauté for about 8-10 minutes, stirring frequently, until the onion is golden brown and caramelized. This step is crucial for the gravy's sweetness and color.
Add Ginger-Garlic and Spices: Add the ginger-garlic paste and sauté for about a minute until fragrant. Reduce the heat to low and stir in the coriander powder, cumin powder, turmeric powder, and chili powder. Cook the spices for 30-60 seconds, stirring constantly to prevent burning.
Cook the Gravy Base: Add the crushed tomatoes to the pot. Increase the heat to medium and cook for about 5-7 minutes, stirring occasionally, until the mixture darkens and the oil starts to separate from the sides.
Simmer the Curry: Add the marinated chicken and stir to coat it evenly in the tomato-onion mixture. Pour in the water or chicken broth. Bring the curry to a simmer, then reduce the heat to low, cover, and cook for 15-20 minutes, or until the chicken is cooked through and tender.
Finish and Serve: Stir in the garam masala and add salt to taste. Simmer for a final 2 minutes. Garnish generously with fresh cilantro and serve hot with basmati rice, naan bread, or roti.