Pat the chicken thighs completely dry with paper towels, then season all over with 1/2 tsp salt and 1/2 tsp black pepper. If using bone-in thighs, cut 2 to 3 deep slashes into each piece to help the spices penetrate.
Heat 3 tbsp oil in a Dutch oven over medium-high heat, then sear the chicken thighs 4 to 5 minutes per side until golden brown. Remove and set aside — the chicken will finish cooking in the sauce.
Reduce heat to medium. In the same pan, add the cumin seeds and sizzle for 30 to 45 seconds, stirring constantly, until fragrant and slightly darkened. Watch closely to prevent burning.
Add the diced onion to the pan and cook over medium heat for 12 to 15 minutes, stirring every 2 minutes, until deep golden brown. Do not rush this step — proper caramelization is the foundation of a rich curry.
Stir in the minced garlic and grated ginger and cook for 1 to 2 minutes until fragrant. Add the chopped tomatoes and cook 8 to 10 minutes, mashing as they soften, until the mixture is thick and paste-like with oil separating around the edges.
Reduce heat to medium-low and stir in the ground coriander, ground cumin, turmeric, and Kashmiri chili powder. Cook for 1 to 2 minutes until the spices are bloomed and fragrant, adding a splash of water if the mixture sticks.
Remove pan from heat briefly, then stir in the room-temperature yogurt one tablespoon at a time, mixing fully after each addition. Return to medium heat and stir for 2 to 3 minutes until the yogurt is fully cooked into the sauce.
Return the seared chicken to the pan, coat in the sauce, and add 1/2 cup water or broth. Cover and simmer on low for 20 to 25 minutes, turning chicken halfway, until it reaches an internal temperature of 165°F (74°C).
Remove the lid for the last 5 minutes to thicken the sauce, then stir in the garam masala and ghee (if using). Rest for 5 minutes, garnish with fresh cilantro, and serve over basmati rice or with warm naan.