Mix chicken with yogurt, turmeric, and salt. Set aside 20 minutes at room temperature.
Heat oil over medium heat. Add cumin seeds and cook 30 to 45 seconds until fragrant. Add onions and cook 18 to 20 minutes, stirring regularly, until deep amber-brown.
Add garlic and ginger directly to the oil. Cook 60 to 90 seconds until golden and raw smell is gone. Stir into onions.
Add tomatoes. Cook 6 to 8 minutes until broken down and oil separates at the pan edges. Add ground coriander, cumin, chili, turmeric, and salt. Cook 2 more minutes.
Add marinated chicken. Stir to coat and cook uncovered over medium-high heat for 5 to 6 minutes until no longer pink on the outside.
Add 0.5 cup water. Reduce heat to medium-low, cover, and simmer 18 to 20 minutes until chicken reaches 75°C (165°F) internally.
Uncover and simmer 3 to 4 minutes if the gravy needs thickening. Add garam masala, adjust salt, garnish with cilantro. Serve immediately.