In the island village of Mandwa, the school teacher Dinanath Chauhan (Chetan Pandit), highly respected by the villagers, tries to dissuade them from giving away their lands on lease to Kancha (Sanjay Dutt), the son of the village head who plans to start a drug mafia. Knowing this, Kancha decides to get rid of the school teacher. He ambushes and murders a young girl inside the school, framing Chauhan for the murder. With the support of the villagers, Kancha then kills Chauhan by hanging him to death from a tree which is witnessed by the young Vijay Chauhan (Arish Bhiwandiwala), the son of the teacher. Vijay Chauhan along with his pregnant mother Suhasini Chauhan (Zarina Wahab) leave the village. Destitute, they find shelter in the city of Mumbai, but Vijay harbours intentions to go back to Mandwa and kill Kancha. While in Mumbai, Vijay's mother delivers a baby girl named Shiksha. Vijay is attracted to Rauf Lala (Rishi Kapoor), a local girl-trafficker and importantly an enemy of Kancha and wants to get into his company. He earns his favour and joins his gang. Meanwhile, his mother along with his baby sister leave Vijay's side as he resorts to violence.
A grown-up Vijay (Hrithik Roshan) now works for Rauf Lala and finds himself as his trusted wing-man. Once inspector and now commissioner, Gaitonde (Om Puri) acts as a silent guardian for Vijay and tries to eliminate crime in Mumbai. During the time when Rauf's influence over the drug business in Mumbai is falling, Kancha decides to grow his influence as a drug lord in the city and sends his aide, Shantaram (Ravi Jhankal) over to Mumbai for the process. Vijay with the help of the commissioner disrupts this plan and is lauded by Lala. He further gains the trust of Lala by taking a bullet shot which was aimed for Lala's son, Mazhar (Rajesh Tandon); but is later revealed as a conspiracy involving Vijay and Shantaram to eliminate Mazhar.
After murdering both Mazhar and Shantaram, Vijay brings Mazhar's corpse to Lala, who falls sick and is admitted into a hospital. In the meantime, Vijay takes over Lala's empire and stops all the crimes committed by Lala's gang. He is then contacted by Kancha and offers to go to Mandwa for a business agreement. While in Mandwa, Vijay tries to strike a deal with Kancha to hand over the drug business in Mumbai over to Kancha and in return taking Mandwa. Though Kancha initially suspects this deal, he later agrees on the condition that Gaitonde must be killed.
Meanwhile, back in Mumbai, Lala regains health and finds out the truth behind Mazhar's death. He gets hold of Shiksha (Kanika Tiwari) and tries to sell her off. Vijay is notified of this by Kancha and he flees back to Mumbai and kills Lala. Soon after, Kancha sends a man to assassinate Gaitonde. This man identifies Vijay to be the son of the teacher killed by Kancha and reports this to Kancha. However, while he tries to assassinate Gaitonde, he is killed by Vijay. Vijay meanwhile marries his love interest Kaali Gawde (Priyanka Chopra), who is killed right after during a shooting spree by Kancha's men.
Vijay leaves for Mandwa to avenge the death of his father and his wife and after an intense battle with Kancha, kills him by hanging him from the same tree in which his father was hanged. However, Vijay succumbs to his injuries and dies in the hands of his mother, who forgives him of his sins.