刑事情报科督察李沧东(张家辉饰),一直通过线人收集情报破案。一次行动,沧东为了抓嫌犯,无奈地牺牲了他的线人废噏(廖启智饰)。废噏身份被悉破,给仇家复仇身中多刀,从此沦为疯子。沧东立功破案,虽旋即晋升,但此后活在阴霾,内疚不已。承受不了压力的沧东出轨,让自己怀孕的妻子小雪染上梅毒。小雪决定自杀,但是没有成功,摔断了腿后失忆。
一年后,警方收到线报,劫金大贼华天(陆毅饰)回港准备做案。沧东上司命沧东安排线人混入华天圈子。沧东往监狱找即将出狱的细鬼(谢霆锋饰) 当线人。细鬼为了筹钱救妹,无奈答允沧东。凭着超卓的驾驶技术,细鬼终成功进入华天贼党做车手。
在沧东的安排之下,细鬼很快得到华天一党的信任,更与华天的女友阿弟(桂纶镁饰) 一同参与物色金店、买枪;本已有足够证据给沧东抓犯,但沧东上司不甘只抓贼党藏械,一定要等劫案正式发生才动手抓人。沧东知道细鬼再跟进去,生命将有极大危险,他当然不想再推另一个线人去送死,可惜在上司压力之下,沧东无从制止... 眼望着细鬼一步一步走向生命边缘,沧东心如刀割。他打电话给细鬼让他想清楚,细鬼答应,并要求用100万做交换。
细鬼参与抢劫金行,阿弟因为华天的无情和分赃不均谋反,双方大打出手。细鬼在他们打的同时用在金行拾来的手机给沧东打电话,沧东带人来把华天抓到了,但是华天手下太平却跑了。另一方面,沧东再次去舞蹈学校找小雪被小雪的父亲看见,发现小雪不在的沧东在换鞋的时候被心怀怨恨的小雪父亲打伤额头又碰巧被恢复意识的小雪看见,无法接受这一切的小雪狂奔到街上被车撞死。经历了这一切的沧东无法原谅自己,企图开车撞墙自
杀,还好安全气囊救了他一命。细鬼身上被打了一枪与阿弟在一起,受伤的细鬼问沧东要钱,但是华天已经把盗窃的所有证件全部销毁,沧东上司准备让细鬼出来作证才同意给细鬼100万。矛盾中的沧东在艰难的抉择之后私自将150万带走准备给细鬼
。与此同时,逃跑的太平和马达找到了躲藏的细鬼一行开始报复,细鬼和阿弟与太平马达拼了个鱼死网破,送来钱的沧东最后制服了歹徒,可是细鬼已经死了。阿弟同意为华天的罪行作证,也算是对所有的事情做了一个了断。沧东用钱把细鬼的妹妹救了出来,又给了另外两个线人安排了后路,最终自己因为私拿公款而被警察带走。