Mélangez le yahourt, les épices, l'ail, le gingembre et le citron dans un bol et enrobez le poulet de ce mélange. Réservez au frais pendant au moins 3 heures.
Faites chauffer une grande poêle avec une cuillère à soupe d'huile à feu vif. Versez-y le poulet avec sa marinade et faites-le saisir en remuant, jusqu'à ce qu'il soit bien doré, voire grillé/à peine brûlé. Réservez-le dans un plat.
Nettoyez la poêle en l'essuyant avec de l'essuie-tout, et faites cuire les oignons dans 2 cuillères à soupe d'huile avec le gingembre râpé. Remuez régulièrement jusqu'à ce qu'ils soient dorés. Rajoutez toutes les épices et continuer à cuire 2 minutes de plus. Ajoutez la tomate, le sucre et l'eau puis laissez cuire environ 10 minutes à feu moyen.
Mixez la sauce au mixeur plongeant pour obtenir un mélange onctueux.
Remettez la sauce sur le feu avec le poulet, la crème et le yahourt puis laissez cuiren à feu très doux pendant environ 30 minutes. Attention, selon que vos morceaux de poulet soient entiers (avec les os) ou en dés, le temps de cuisson sera plus ou moins long. Le poulet doit être bien cuit.
Rajoutez le beurre à la fin, mélangez et parsemez de coriandre frais pour le service