Heat oil in a large vessel over medium high heat. Add onions and cook until golden brown, stirring often. Once onions have turned golden, carefully transfer to a dish or container, add yogurt and tomatoes, and puree to a smooth consistency. Set aside.
In the same vessel, add chicken and ginger garlic paste. Cook over medium high heat until the chicken is no longer pink, about 5 minutes. Transfer the chicken to a separate dish and set aside.
To the remaining oil (add more if there is not enough), add coriander powder, red chili powder, cardamoms, bayleaf, and salt. Cook for a minute, adding a splash of water as needed if the spices are sticking to the bottom of the vessel.
Add chicken into the curry, reduce heat to medium, cover, and simmer until the chicken is cooked through. Adjust seasoning as needed.
Measurements are in actual measuring spoons/cups and not eating utensils.