程勇(徐崢飾)是上海一家印度神油專賣店的老闆,生意慘淡,老婆跟別人跑了,老爹住院需要錢做手術,前妻還要帶兒子移民。他的人生一塌糊塗。
一天,一個戴著口罩的瘦弱男人找上門來。他叫呂受益(王傳君飾),慢粒白血病患者。他求程勇幫忙從印度代購一種仿製藥——印度格列寧。這種藥的成分和瑞士正版藥「格列寧」完全一樣,但價格只有正版的二十分之一。正版藥一瓶四萬塊,大多數患者根本吃不起,而印度仿製藥只要五百塊。
程勇一開始拒絕了。但走投無路的他最終還是飛去了印度。

藥神誕生
程勇拿到了印度格列寧的中國獨家代理權,以每瓶五百元的成本價進貨,五千元的價格賣出。為了打開銷路,他組建了一個草臺班子:呂受益負責聯絡病友群;「黃毛」彭浩(章宇飾),一個從農村出來的二十歲小夥子,得了白血病卻不願拖累家人,獨自在屠宰場打工,負責跑腿送貨;劉思慧(譚卓飾),單親媽媽,女兒也患有白血病,她白天照顧女兒,晚上在夜總會跳鋼管舞賺錢,負責聯絡上海各大病友群;劉牧師(楊新鳴飾),一個說著流利英語的老基督徒,自己也是白血病患者,負責翻譯和聯絡外省病友。
藥賣得很火。程勇一個月能賺幾十萬。白血病患者們把他當成救命恩人,叫他「藥神」。

退出
好景不長。一個叫張長林(王硯輝飾)的假藥販子盯上了程勇的生意。張長林之前靠賣假藥騙白血病人的錢,被程勇等人當眾拆穿後懷恨在心。他反過來威脅程勇:要麼把印度藥的渠道讓給他,要麼就去舉報程勇走私藥品。
程勇害怕了。他有兒子,不想坐牢。他以八十萬的價格把代理權轉讓給了張長林,然後用這筆錢開了一家正經的服裝廠,過上了體面的日子。
張長林拿到渠道後,把藥價從五千抬到了兩萬。很多患者又吃不起了。

呂受益之死
一年後,程勇去醫院看望呂受益,發現他的病情已經急劇惡化。呂受益因為吃不起高價藥,病情進入了急變期,需要做化療和骨髓移植,費用遠超這個家庭的承受能力。
呂受益的妻子抱著剛會走路的孩子,在病房門口哭著感謝程勇當初賣藥救了他們一年多的時間。那個曾經笑嘻嘻地說「吃個橘子」的男人,現在躺在病床上瘦得皮包骨。
不久後,呂受益割腕自殺了。他不想再拖累妻子和孩子。
程勇參加了呂受益的葬禮。病友們戴著白色口罩,沉默地站在殯儀館裡。程勇看著那些眼神,終於被徹底擊碎了。
重新賣藥

程勇決定重新賣藥。但這一次,他不再為了賺錢。
他以五百元的成本價從印度進藥,卻只賣五百元——一分錢不賺。印度藥廠後來被瑞士公司起訴停產,程勇找到了其他渠道,進價漲到了兩千,他依然只賣五百,差價全部自己貼。他把服裝廠賺的錢全部填了進去。
他聯絡了全國各地的白血病患者群,藥從上海發往全國。為了躲避警方的追查,他把每次的進貨量控制在最小範圍,親自拆分包裝,用不同的快遞發出去。
與此同時,警察曹斌(周一圍飾)——程勇前妻的弟弟——接到了追查走私藥品的任務。他一步步逼近真相,但當他看到那些因為吃不起正版藥而瀕臨死亡的患者時,他也陷入了深深的矛盾。一個老太太拉住他的手說:「我吃了三年正版藥,房子吃沒了,家人被我吃垮了。好不容易有了便宜藥,你們把他抓了,我們只有等死。」
黃毛之死

最後一次運藥時,黃毛發現碼頭有警察。這個二十歲的男孩剛剛買好了回家的火車票——他終於打算回去看看父母了。但他沒有猶豫,搶過裝藥的車就開走,引開了所有警察。
在瘋狂的追逐中,黃毛的車被一輛大卡車撞上。程勇趕到時,黃毛已經躺在血泊中。他抓著交警隊長的衣領吼道:「他才二十歲,他只是想活著,他有什麼罪!」
黃毛死了。口袋裡還揣著那張回家的火車票。
審判
程勇被捕了。在法庭上,他沒有為自己辯護太多。他被判處有期徒刑五年。
押送他去監獄的路上,警車緩緩駛過街道。路兩邊站滿了白血病患者,他們一個接一個地摘下口罩,沉默地目送著這輛車。程勇透過車窗看著那些面孔——有些他認識,有些他不認識,但每一張臉上都寫滿了感激。
程勇最終因表現良好減刑,三年後出獄。曹斌來接他。曹斌告訴他,正版格列寧已經被納入了醫保,印度的仿製藥也恢復了生產。那些患者,現在都能吃得起藥了。
陽光照在程勇的臉上。他不是藥神,只是一個普通人,做了一件不普通的事。