Heat the oil in a large skillet over medium heat. Add the onion and sauté until softened, about 5 minutes.
Add the garlic, ginger, cumin, coriander, turmeric, garam masala and chili powder. Sauté until fragrant, about 2 minutes.
Add the diced chicken and cook until lightly browned, about 5 minutes.
Add the diced tomatoes, tomato sauce, yogurt and chicken broth. Stir to combine and bring to a simmer.
Reduce the heat to low and simmer for 15 minutes, stirring occasionally, until the chicken is cooked through.
Stir in the fresh cilantro and season with salt and pepper to taste.
Serve over hot cooked basmati rice, with extra cilantro for garnish, if desired.