Heat oil in a large pan over medium-high heat. Add the diced chicken and cook for 1-2 minutes per side until the edges are lightly browned. Remove the chicken and set aside. In the same pan, add the onion rings and cook over low heat for 15 minutes, stirring occasionally.
Add the garlic, ginger, cinnamon stick, cardamom pods, salt, cayenne pepper, and ground cumin to the pan. Cook over low heat for 5 minutes, stirring constantly. Return the chicken to the pan. Add the chopped tomatoes and 500 ml water. Cover with a lid and simmer over low heat for 30-45 minutes, stirring occasionally. Uncover the pan and cook for the final 10 minutes. Chicken is ready when it reaches an internal temperature of 74 °C (165 °F).
Stir in the chopped coriander greens and turmeric. If desired, stir in 1-2 tablespoons of sour cream or crème fraîche. For best flavor, prepare the dish 2-3 hours in advance or refrigerate overnight before serving.