Heat the vegetable oil in a large heavy-bottomed pan over medium heat until shimmering.
Add the finely chopped brown onions along with the green cardamom pods (optional), cinnamon stick (optional) and bay leaf (optional). Fry, stirring occasionally, for 8–10 minutes until golden brown and softened.
Stir in the grated fresh ginger and crushed garlic, and cook for 1 minute, stirring constantly, until aromatic.
Add the ground cumin, ground coriander, ground turmeric and chilli powder. Stir and cook for 30–60 seconds to lightly toast the spices.
Add the chicken pieces and stir well to coat in the spices and onions. Cook for 5–7 minutes, stirring occasionally, until the chicken is sealed and lightly browned on all sides.
Pour in the chopped tomatoes and add a good pinch of salt. Stir, bring to a gentle simmer, then reduce heat to low, cover and cook for 20 minutes.
Remove the lid, increase heat to medium-high, and cook, stirring frequently, for 10–15 minutes until the sauce thickens and oil separates. Add a splash of hot water if it becomes too dry.
Stir in the garam masala and cook for 1 minute, then remove the pan from the heat.
Taste and adjust the salt if needed, then scatter over the freshly chopped coriander.
Serve hot with fluffy basmati rice, warm naan bread or chapatis.