Vishal Agnihotri (Sunil Shetty), a convict, is imprisoned for the murder of a group of four criminals who had brutally raped and killed his sister-in-law. Vishal tries to get justice in court, but is unsuccessful and the men are released from prison with the help of a corrupt lawyer. The criminals then visit Vishal’s home because he tried to file a case against them. The four criminals try to rape Vishal’s wife Priya (Poonam Jhawer), but she kills herself with a knife. Angered at all this, Vishal decides to take the matter into his own hands and murders the four criminals himself. He is sentenced to life in prison for the crimes.

When journalist Roma Singh (Raveena Tandon) visits the jail for a report that she’s writing, a few of the convicts try to rape her. The attempted rape reminds Vishal of his misfortune and he intervenes and saves Roma. Roma hears Vishal’s story and decides to help free him. She is heard by a blind businessman – Mr. Jindal (Naseeruddin Shah) who tries to recruit Vishal as a hit-man. He wants Vishal to kill some anti-social elements in the city, mainly the two powerful drug lords Jibran (Raza Murad) and Tyson (Gulshan Grover) and all the people who work for them. Mr. Jindal tells Vishal that these drug lords are responsible for creating people like the group of four men he killed in the first place, by bringing drugs to the streets and corrupting the locals. Vishal refuses at first as he has just got out of prison, and now wants to live a normal life. However, the memories of his murdered family come back to haunt him as he spends a day alone in his home, and he agrees to work for Jindal.

Inspector Sahoo (Paresh Rawal) is very greedy and becomes an informer for Jibran, one of the targeted drug lords. He discloses all internal matters of the police department to Jibran in return for money.

Police Inspector Amar Saxena (Akshay Kumar) is trying to catch the drug-trading suspects. He is unhappy about the release of Vishal, who he believes deserves to be in prison because of the murders he committed. Things become even more complicated when Amar finds Vishal at most of the murder scenes of criminals involved in drug-trading. Vishal goes on a murder spree, until he realizes that even the Commissioner (Sadashiv Amrapurkar) thinks that the unknown murderer is doing more to help society than police could ever do. Vishal refuses to kill the Commissioner, thus angering his boss, Jindal. Vishal attacks Jindal with a paper-weight, but Jindal dodges it. Vishal then realizes that Jindal is not blind and is the real antagonist, as he was pulling the strings all this time.

Jindal tells Vishal that Jibran and Tyson were his rivals. He also confesses that he murdered his wife Pooja (Priya Tendulkar) and Inspector Karan Saxena (who happens to be Amar’s father), to cover up the truth, and faked his blindness to throw the police off his trail. Jindal, who has now partnered with his former enemy, Jibran, leaves Vishal to die. Vishal escapes, only to be confronted by Amar. Vishal subdues Amar and tells him the truth. Inspector Sahoo, who is brought to Jindal by Jibran to give him important information about Vishal, tells him that Vishal is alive and will tell the entire truth to Amar and the Commissioner by the next morning. Then Jindal kidnaps the journalist, Roma, and kills the sub-editor Siddiqui, who tries to save Roma. Amar, Vishal and the Commissioner go to Jindal’s home to arrest him, but they find the sub-editor, Siddiqui, brutally murdered at his home. They discover that Jindal has kidnapped Roma in order to forcefully marry her. Amar and Vishal find Jindal’s den with the help of Inspector Sahoo and corner him.

After a melee, Jibran is killed. Jindal tries to kill Amar, but Vishal takes the bullet and dies in Amar’s lap. Amar kills Jindal and avenges the death of Vishal and his father.