Season the chicken with a pinch of salt and set aside. Patience here makes for juicier, happier chicken.
Heat ghee or oil in a large pan over medium heat. Add onions and cook until soft and translucent, about 4–5 minutes.
Add garlic and ginger; sauté for about 1 minute until fragrant. If your kitchen starts smelling like a spice market, you’re doing it right.
Stir in garam masala, cumin, paprika, and chili powder. Toast the spices for 30 seconds to wake them up.
Add tomato puree, then simmer for 8–10 minutes to thicken and deepen the flavor. Stir occasionally so nothing sticks and burns (we’ve all had that moment).
Slide in the chicken pieces. Cook until they’re just cooked through, about 6–8 minutes, depending on size.
Stir in cream (or coconut milk) and butter if using. Simmer for another 3–4 minutes until everything’s glossy and cohesive. Taste and adjust salt as needed.
Garnish with fresh cilantro and serve hot. If you’re feeling fancy, drizzle extra cream on top.