‘Shahid’ is a story based on real-life human-rights and criminal lawyer, Shahid Azmi, who was slain while defending the wrongly accused by the law in terrorist activities. She is an ordinary citizen with an extraordinary commitment to justice.
The film opens with the murder of Shahid Azmi (Rajkummar Rao) and goes into a flashback to the violence during the Bombay Riots. There Shahid witnesses cold-blooded murders and in anger runs away to Pakistan-administered Kashmir, where he spends a brief period at a militant training camp. He soon returns. In Mumbai, he is arrested under the TADA, for an alleged conspiracy to assassinate some politicians. He is brutally tortured by police and forced to admit the crime, after which he spends seven years at Tihar Jail in New Delhi. During his stay at Tihar Jail, he's tried to be brainwashed by Omar Sheikh (Prabal Panjabi). But another fellow jail mate War Saab (Kay Kay Menon) inspires him to start his college education.
Once he is acquitted of the charges, he goes ahead to study law in Mumbai. After receiving his law degree, Shahid works with lawyer Maqbool Memon (Tigmanshu Dhulia) for some months, before starting his career as an independent lawyer with the financial support of his elder brother Arif (Mohammed Zeeshan Ayyub). During this process, he meets Mariam (Prabhleen Sandhu), a Muslim divorcee, and marries her. Shahid soon starts picking up cases of Muslims charged under the POTA. He fights many cases pro bono in consultation with NGOs.
On one occasion, Shahid's face is blackened by assailants outside the courtroom. While defending Faheem Ansari in the 2008 Mumbai attacks case, he gets shot by two gunmen in his office and dies on the spot. Later, Ansari is shown to be acquitted of all the charges by the Supreme Court of India due to lack of evidence. In a post-credits scene, Shahid's journey to the training camp is shown.