Heat a skillet or wok over medium heat and add the canola oil.
Add the bay leaf, cinnamon stick, cardamom pod, cloves, and cumin seeds; toast for about 30–60 seconds until fragrant.
Add the chopped onion, grated ginger, and minced garlic; cook, stirring occasionally, until the onion is golden, about 5–6 minutes.
Pour in the tomato puree and cook, stirring occasionally, for 6–8 minutes until the puree darkens and reduces slightly.
Stir in turmeric, red chili powder (or paprika), coriander powder, curry powder, and salt; mix well and add 1 cup of water.
Bring the sauce to a gentle boil, then add the chicken pieces. Cover and simmer on medium-low heat for 8–10 minutes until the chicken is cooked through.
Remove the lid and cook a few minutes more until the sauce thickens slightly, then stir in the yogurt and cook 3–5 minutes until the sauce is well combined and begins to separate from the oil.
Stir in the garam masala and garnish with chopped cilantro. Serve hot with basmati rice or naan.