In a small village in Darjeeling, Sahuji (Utpal Dutt) the merchant has weaved a web of corruption into every layer of the social fabric. He supplies materials of inferior quality to the tea garden, and then bribes the accountants to pass his bills.
When one of the managers, called "Boro Babu", (Abhi Bhattacharya), stands up, Sahuji pays the workers to go into strike against this Boro Babu. And he is also involved in rampant smuggling of goods across the border, and everyone from the local jeweler to the local police inspector are part of his intricate web.
While the father has created a position of influence by spreading corruption, his son Kaaliram (Amjad Khan) has ushered in a reign of terror. He goes to local bars, drinks, and doesn't pay. Anyone standing in his way gets beaten up mercilessly, either by him or his thugs.
After getting sufficiently intoxicated, he then indulges in carnal desire by forcefully taking away any of the unmarried village girls for a night of merriment. If the poor girl's parents try to fight back, their house is set on fire. Desperate villagers make a plea to the owner of the tea garden, who calls (presumably) the higher ups in police force and they promise to send someone.
Next day, while crossing a bridge, Kaaliram and his thugs meet a mysterious stranger on a mule, whose face is completely covered in a Sombrero-type hat popular in that region. The stranger, named Abhijit (Amitabh Bachchan), doesn't seem to be aware of Kaali's reputation and has no hesitation in fighting back strongly.
Kaali vows to take revenge, but on a number of subsequent encounters, including a drum-playing competition, Kaali comes up second every time. However, the ever so loyal police inspector (Asit Sen), always comes to his rescue and prevents him from being sent to jail. However, Kaali's frustration grows.
In the meanwhile, Abhijit has met Rajni (Raakhee), the blind daughter of the Boro Babu, and fell in love with her. In the first of the two important Barsaat Ki Raats (which means rainy night) in the story, Kaali makes a bold attempt to molest Rajni, but Abhijit comes to her rescue. And when the police inspector again attempts to drag his feet, Abhijit erupts in anger, shows his identity as a very high level police officer, throws Kaali into jail and suspends the police officer also.
Second half of the story finds Abhijit, now promoted, in a quaint little village named Sonarpur, with Rajni as his wife, and awaiting the arrival of their first child. In the meanwhile, Kaalia gets out of jail, and finds the whereabouts of Abhijit and Rajni. He sends Abhijit away from home by making a fake call for help, and then, in the second significant Barsaat Ki Raat of the story, he enters Abhijit's home and kills Abhijit's unborn child.
A clue found outside the house ties Kaali with the incident and Abhijit runs out to take his vengeance. His police jeep was sent off the road by Kaali's truck, and he was presumed dead. But, in a typical Hindi movie formula, he comes back in a disguise, participates in a song and dance with a village belle (Prema Narayan), and then brings Kaalia to justice. However, as he is about to drag the handcuffed Kaalia to the police station, Sahuji, in an attempt to shoot Abhijit, ends up killing his son.