In a large bowl, combine vinegar, turmeric, cumin, coriander, chili powder, minced garlic, grated ginger, and salt.
Add the chicken pieces to the marinade and mix well, ensuring each piece is coated.
Cover and refrigerate for at least 30 minutes (or up to 8 hours for deeper flavor).
Heat 2 tbsp oil or ghee in a large pot or Dutch oven over medium-high heat.
Add the marinated chicken pieces and cook for 5-7 minutes, stirring occasionally until lightly browned. Remove the chicken from the pot and set it aside.
In the same pot, add the chopped onions. Sauté for 5-7 minutes until golden brown.
Add the minced garlic and grated ginger. Cook for 1-2 minutes until fragrant.
Add turmeric, cumin, coriander, garam masala, cinnamon, and chili powder (if using). Stir well to coat the onions in the spices. Cook for 1-2 minutes.
Add the chopped tomatoes to the pot. Stir and cook for 3-5 minutes until the tomatoes soften and break down.
Pour in the chicken broth and 1 tbsp vinegar. Stir well to combine.
Return the cooked chicken to the pot.
Stir well to coat the chicken in the sauce.
Bring the curry to a boil, then reduce the heat to low. Cover and simmer for 20-25 minutes, stirring occasionally, until the chicken is tender and the sauce has thickened.
Taste the curry and adjust the seasoning, adding more salt or chili if needed.
Serve hot with steamed rice, basmati rice, or naan. Garnish with fresh cilantro. Enjoy!