丹尼斯(拉尔夫·费因斯 Ralph Fiennes 饰)已经在精神病院治疗了20年,现在他刚回归社会,却发现并不能顺利地开始新生活。因为,往昔的情景一幕幕闪回,支离破碎而又让他无法摆脱。尤其是母亲,以及父亲和那个破坏了丹尼斯家庭的妓女,更让他回忆中的往事似乎变得真实。是父亲和妓女杀死了他心爱的母亲。他们残忍地用铁锹砸死母亲,把她埋在菜园子里…… 把回忆串联起来后,丹尼斯决定找妓女复仇。然而,他的记忆可靠吗?事情的原貌正如他还原出来的样子吗?有时记忆常常会欺骗我们。
货车司机唐志明(黄秋生 饰)和妻子亚珍(程迷 饰)喜迁新居,两人对未来的生活充满了美好的期待。然而,让他们没有想到的是,没过多久,他们就遭到了黑社会的勒索和恐吓,生活陷入了恐慌之中。就在这个节骨眼上,亚珍的老相好罐头刀(黄子扬 饰)及时出现,摆平了麻烦,然而他的所作所为另有所图。 在罐头刀的利诱之下,亚珍炒起了外汇,结果亏得一塌糊涂,之后,罐头刀又诱使其借高利贷,最终亚珍被巨额利息压垮,无力偿还。恐惧令亚珍向唐志明隐瞒了事实,最终,亚珍因此而丢掉了性命。妻子惨死,一向忠恳老实的唐志明再也忍无可忍,他一改往日软弱的性格,提及屠刀决定复仇。
1960年代,一列满载各界旅客的502次火车徐徐开往江城。列车乘务组由十三个年轻姑娘组成,共产党员裴兰英(卢桂兰 饰)是列车长。入夜,骤起狂风,往火车站赶车的解放军某部林营长(盛林中 饰),发现一棵被风刮倒的大树横卧在铁轨上,他搬了几次,大树纹丝不动,却被飞来的石块击中头部,他昏迷过去。502次眼看开过来了,苏醒过来的林营长顽强地站在路基上,用手电筒发出紧急停车信号。列车停稳,他被抬上列车,经医生检查发现,他伤势严重,需尽快手术。裴兰英紧急请示铁路局,要求将502次列车改为“特快列车”, 抢救林营长的生命。路局打破常规,沿站临时调度,502次列车飞奔江城......