Start by marinating the chicken. In a large glass bowl, combine the olive oil with garlic powder, garam masala, cumin, chili powder, and salt.
Add the chicken and toss to coat with the marinade. Cover with plastic wrap and refrigerate for at least 6 hours, up to 24 hours.
To make the sauce, heat 2 tablespoons of ghee or clarified butter in a large skillet over medium-high heat.
Use tongs to add the marinated chicken pieces to the skillet in a single layer, leaving behind the excess marinade, and brown on all sides.
Cook the chicken in batches, if necessary, and don’t worry about cooking it all the way through at this stage.
Transfer the browned chicken to a plate. Add another tablespoon of ghee to the skillet, and reduce to medium heat.
Add the onion, garlic, garam masala, ginger, chili powder, coriander, and cayenne, and stir to combine.
Cook the mixture for 45 seconds, then add the tomato sauce. Bring the sauce to a simmer and cook for 5 minutes, stirring occasionally.
Stir in the coconut cream, and return to a simmer. Return the browned chicken pieces to the skillet, along with any accumulated juices, and use a wooden spoon to settle the chicken into the sauce.
Simmer for 10-15 minutes over medium-low heat, until the chicken, is tender and cooked through.
Season to taste with salt and pepper if necessary. Garnish with chopped cilantro and serve hot.