Heat the olive oil in a large deep skillet or Dutch oven over medium heat. Add the onion and cook for 3 to 4 minutes, until softened.
Stir in the garlic, garam masala, cumin, curry powder, turmeric, chili powder, salt, and black pepper. Cook for about 30 seconds, just until fragrant.
Add the chicken and cook for 1 to 2 minutes, stirring to coat it in the spices. It does not need to be fully cooked.
Stir in the rinsed basmati rice, tomato sauce, coconut milk, and chicken broth. Bring the mixture to a gentle simmer.
Reduce the heat to low and cover. Cook for 12 to 15 minutes, without stirring, until the rice is just tender and the chicken reaches 165°F.
Remove the pan from the heat as soon as the liquid is absorbed. Let it rest, covered, for 5 minutes.
Fluff gently with a fork, garnish with cilantro, and serve warm.