Heat oil in a heavy-bottomed pan over medium heat. Add cinnamon, cardamom, cloves, and bay leaves. Sauté for 30 seconds until fragrant.
Add chopped onions and cook until golden brown, about 6-8 minutes, stirring occasionally.
Add ginger garlic paste and green chillies. Cook for 1-2 minutes until fragrant.
Add tomatoes, turmeric powder, and salt. Cook until tomatoes are soft and break down, about 5-7 minutes.
Add chicken pieces to the pan. Coat well with the masala and cook on high heat for 5 minutes, stirring frequently.
Add ½ cup warm water, cover the pan, and simmer for 10 minutes.
Add remaining 2 cups hot water, cover, and cook for 20-25 minutes until chicken is tender and oil begins to separate from the gravy.
Adjust salt to taste, garnish with fresh coriander leaves, and serve hot with rice or chapati.