Ceci est l'histoire du Thakur Raibahadur Harnaam Singh (Jayant). Le film s'ouvre sur un flash-back remontant à 18 ans plus tôt, lors d'une nuit de Diwali. Raibahadur a un bébé d'un an qui a été échangé par une banjaran (une femme gitane) avec qui il a entretenu une relation. Elle le menaçait pour qu'il la traite bien et l'épouse.
Dans le présent, un homme fait son apparition, vêtu d'un uniforme kaki, d'une cravate rouge et de chaussettes rouges : il s'agit de Raj Kumar, dit Raju (Raj Kapoor). Surnommé le "Marchand de rêves", il redonne de l'espoir à ceux qui souffrent, notamment aux habitants terrorisés par le cruel Thakur Raibahadur. Il fait la rencontre d'une jeune banjaran, Mahi (Hema Malini), qui tombe éperdument amoureuse de lui.
Pendant ce temps, Raibahadur maltraite Ranjana (Tanuja), la fille d'une banjaran, tout en lui promettant que si personne d'autre ne veut d'elle, il l'épousera. De son côté, Mahi, se sentant en insécurité quant aux sentiments de Raju, raconte aux villageois qu'elle est enceinte de lui. Le panchayat (le conseil du village) ordonne alors à Raju de l'épouser, mais celui-ci refuse catégoriquement.
Profitant de la situation, Raibahadur intervient et parvient à persuader les villageois en colère de s'en prendre à Raju et Mahi et de les lyncher. L'attaque commence, mais soudain, une banjaran fait irruption sur les lieux et révèle enfin toute la vérité sur le passé.