Add chicken to a large mixing bowl. Make sure there is no excess water/ dripping moisture in the chicken. Add ginger garlic paste, turmeric, red chilli powder, salt, yogurt (optional), garam masala or chicken masala.
Cover & set aside for about 45 mins to 1 hour. It can also be left overnight in the refrigerator.
Heat oil in a pan or pot. Add the whole spices - cloves, cinnamon, cardamoms and bay leaf. (be careful - they can splutter)
Add green chilies and onions. Saute them on a medium to medium high heat for 5 to 6 mins. Then reduce the heat and saute for a few more minutes until the onions turn golden.
Add ginger garlic paste and saute for a minute, until the raw smell of the ginger garlic goes off.
Pour the tomato puree. Then add salt, red chili powder and garam masala as well.
Saute this very well until the mixture begins to smell aromatic and release some oil. This takes only 2 to 3 minutes.
Add marinated chicken and saute for 4 to 5 mins on a medium to high flame. Turn the flame to completely low and cook covered for 5 mins. (Alternately you can also sear the chicken with 1 tablespoon oil in a separate pan or grill or air fry for 5 mins first & add to the prepared onion tomato masala.)
Add coriander leaves or mint leaves and give a good stir.
Cover the pan again and continue to cook on a low heat until chicken is completely cooked to soft and tender. For a semi-dry chicken masala, you don't need to add water as the chicken gets cooked in its own moisture.
To make a gravy dish: Add little hot water or coconut milk at the previous step, after adding coriander leaves. Cook until the gravy turns thick & chicken is cooked through. If you intend to use coconut milk, add more red chilli and garam masala when you cook the tomato puree earlier.
Your chicken is fully cooked when the internal temperature reaches to 165 F. The other way is to pierce the chicken with a fork and should be able to pull out the meat easily from the pieces.
Taste test and add more salt or garam masala if you want. You can also add 2 to 3 tbsps. of heavy cream or whipping cream. Garnish with coriander leaves.
Serve chicken masala hot with steamed rice, roti, sliced onion wedges and lemon.