Prepare the marinade. Add yogurt and all the spices in a food processor. Add the fresh cilantro leaves.
Blend until combined.
Set marinade aside.
Chop the chicken into small 1/2 inch pieces.
Pour the marinade into the chicken.
Coat the chicken. Cover the chicken and place bowl into the fridge for 3 hours at least and up to 24 hours.
Chop the onion.
Heat up a dutch oven on medium heat, once hot, add oil followed by bay leaf and cumin seeds. Add onions. Saute for 5 minutes until golden brown.
While the onions brown, chop the tomatoes.
Now add the tomatoes to the onions. Stir and season with salt.
Reduce heat to low-medium heat. Cover and cook the onions and tomatoes until a paste-like consistency is formed, about 5-7 minutes.
This is what you should have.
Add the marinated chicken to the onion-tomato mixture.
Stir. Add the water at this time. Cook the chicken for 5 minutes.
Cover chicken with a lid and cook for 20 minutes. Keep checking and stirring in between. Notice the water will slowly evaporate.
Once the chicken curry is at your desired consistency, check to make sure the chicken is cooked through. Also note, once at rest, the chicken gravy will gradually thicken. Turn off the stove.
Let the chicken curry sit for about 15 minutes so the flavors marry together. Serve with brown rice, white rice, quinoa, or naan.