影片开场,乔(华金·菲尼克斯饰)在一家汽车旅馆。他是一名雇佣枪手,以追捕失踪的被贩卖女孩为生。每次完成任务后,他都会把自己洗干净,抹去所有痕迹,然后离开。乔在一条小巷里被一名男子袭击,但乔轻松将其击退。之后,他去找手机,向经纪人确认任务已完成。
乔和他生病的母亲(朱迪思·罗伯茨饰)住在纽约。她是乔生命中唯一的亲人。作为一名前联邦调查局特工和海湾战争老兵,乔经历了无数次创伤后应激障碍的闪回,包括他亲眼目睹一个孩子因为给了那个孩子一块糖果而被枪杀,又一次在仓库里发现了几具被贩卖女孩的尸体,以及他自己饱受虐待的童年,躲避着酗酒成性的虐待狂父亲。他经常在玩弄刀子或站在城市火车轨道上沉思时,产生自杀的念头。
乔去一家杂货店向安吉尔(弗兰克·潘多饰)收钱,安吉尔是乔和经纪人之间的中间人。他告诉安吉尔,他的儿子莫伊塞斯(维尼修斯·达马塞诺饰)前一天晚上看到他回家,这表明莫伊塞斯对乔的职业和住处有所了解。这让乔很不高兴,决定与安吉尔断绝关系。
乔随后与经纪人约翰·麦克莱里(约翰·道曼饰)见面。麦克莱里告诉乔一项新任务:他必须救回州参议员阿尔伯特·沃托(亚历克斯·马内特饰)离家出走的女儿。沃托不希望当局介入,因为他正在与州长威廉姆斯(亚历桑德罗·尼沃拉饰)合作,并愿意支付5万美元来找回女儿。
乔后来亲自与沃托见面,讨论他所知道的女儿的下落。他告诉乔,女儿名叫妮娜(叶卡捷琳娜·萨姆索诺夫饰),可能藏身于一个专门收留贩卖女孩的地址。乔给了沃托一个地址,让他们在任务完成后见面,沃托要求乔杀死那些肇事者。
乔花了大半个下午寻找物资,终于找到了妮娜被关押的儿童贩卖屋。他袭击并审问了一名进出该屋的男子,想知道屋里有多少警卫。乔进入屋内,杀死了所有警卫,然后找到了妮娜。他把妮娜带到一家汽车旅馆,他预料到她父亲会在那里,却在电视上看到沃托跳楼自杀的画面。随后,一群腐败的警察闯入旅馆,袭击了乔,并带走了妮娜。片刻之后,乔与警察搏斗,将其击毙。
乔试图联系麦克莱里寻求帮助,却发现他和安吉尔、莫伊塞斯都死了。乔回到家,发现母亲也在床上被谋杀。他发现凶手仍在屋内等着他。乔设法占了上风,开枪射杀了他们两人。其中一人还活着,但命悬一线。乔质问他,究竟是谁杀了他的母亲,以及他们之中是否有人杀死了沃托。杀手回答说“沃托想逃跑”,因为他显然与威廉姆斯州长合谋,而杀手说威廉姆斯州长最喜欢妮娜。
乔把母亲的遗体带到湖边埋葬。他还试图用石头填满口袋,把自己淹死。随着他越陷越深,他看到了妮娜的幻象,这让他回过神来,好让他游回水面继续工作。
乔在脑海里把所有线索拼凑起来。沃托和威廉姆斯都参与了一起儿童性交易案,沃托为了讨好威廉姆斯,把妮娜卖给了威廉姆斯。然而,这种罪恶感最终驱使沃托自杀。乔随后跟踪威廉姆斯在城里四处游荡,直到弄清楚他的去向。
乔跟踪威廉姆斯到他家。他进屋杀死了警卫,然后前往威廉姆斯的房间,却发现他的喉咙已被割开。随后,乔发现妮娜在餐厅里吃饭,双手沾满鲜血,身边放着一把沾满鲜血的剃须刀。
乔随后带妮娜去一家小餐馆吃饭。她去了趟洗手间,不久后乔就开枪自杀了,但似乎没人在意。妮娜回来后,我们看到乔只是个幻想,瘫倒在地,疲惫不堪,压力重重。她告诉他,今天天气很好,他们应该去。乔同意了,最后,小摊位空了。