Aqueça o óleo vegetal em uma panela grande de fundo grosso em fogo médio até o óleo ficar bem quente.
Adicione a cebola média picada e, se desejar, as vagens de cardamomo verde, o pau de canela e a folha de louro (opcionais). Refogue, mexendo de vez em quando, por 8 a 10 minutos, até a cebola dourar e ficar macia.
Acrescente o gengibre ralado e o alho amassado. Cozinhe por 1 minuto, mexendo sempre, até ficar aromático.
Incorpore o cominho em pó, o coentro em pó, o açafrão-da-terra em pó e a pimenta caiena em pó. Cozinhe por 30 a 60 segundos, mexendo, para tostar levemente as especiarias.
Adicione os pedaços de frango e mexa bem para envolver na mistura de especiarias e cebola. Cozinhe por 5 a 7 minutos, mexendo ocasionalmente, até o frango selar e dourar levemente.
Despeje o tomate pelado picado, tempere com uma pitada de sal, misture, tampe a panela e deixe cozinhar em fogo baixo por 20 minutos.
Retire a tampa, aumente o fogo para médio-alto e cozinhe, mexendo com frequência, por 10 a 15 minutos, até o molho engrossar e o óleo se separar. Se ficar muito seco, adicione um pouco de água quente.
Polvilhe o garam masala, cozinhe por mais 1 minuto e retire a panela do fogo.
Prove e ajuste o sal, se necessário. Salpique o coentro fresco picado por cima.
Sirva quente com arroz basmati soltinho e naan ou chapatis quentinhos.