Dans un petit bol, mélanger le yogourt, le jus de lime, 1 c. à thé (5 ml) d’ail et 1 c. à table (15 ml) de garam masala. Verser sur le poulet dans un grand sac refermable, puis mélanger pour enrober uniformément. Laisser mariner au réfrigérateur de 30 minutes à 1 jour, pour plus de saveur.
Dans une grande poêle, chauffer 1 c. à table (15 ml) d’huile végétale à feu moyen. Ajouter le poulet et cuire jusqu’à ce qu’il soit doré et que sa température interne atteigne 165 °F (74 °C). Retirer de la poêle et réserver.
Ajouter la c. à table (15 ml) restante d’huile dans la poêle et faire sauter les oignons à feu moyen-doux. Ajouter le sel. Faire sauter 10 à 15 minutes, jusqu’à ce que les oignons deviennent translucides et dorés, en prenant soin de ne pas les brûler. Ajouter la c. à thé (5 ml) restante d’ail, le gingembre, la c. à table (15 ml) restante de garam masala, la cardamome, le cumin et le piment de cayenne. Cuire 1 minute jusqu’à ce que le mélange dégage son arôme. Incorporer les tomates et porter à ébullition. Réduire le feu à doux et laisser mijoter pendant 5 à 10 minutes. Ajouter le lait de coco et laisser mijoter 5 minutes. Mettre la sauce dans le mélangeur et réduire en purée jusqu’à consistance lisse (en veillant à ce que la vapeur puisse s’échapper par le couvercle).
Faire mijoter la sauce une autre fois, et y ajouter le poulet cuit. Laisser mijoter 3 minutes ou jusqu’à ce que le poulet soit bien réchauffé
Servir sur du riz basmati cuit ou avec du pain naan, au goût.