汉尼拔(加斯帕德·尤利尔)的童年之初充满明媚与温馨,可爱的妹妹就像他的小尾巴,是他最爱的亲人。然而战争带走了一切,他的父亲、母亲还有他的家园。可是这仅仅是噩梦的开始,真正的毁了他一生的是妹妹的死——残忍的德军,吃了他的妹妹。
妹妹的死成了汉尼拔永远的梦魇,妹妹的脸庞和声 音常常在他的梦里出现。汉尼拔决定去寻找他最后的亲人,叔叔的妻子,他的婶婶,一个神秘的东方女人,紫夫人(巩俐)。紫夫人教会了汉尼拔搏击的技术,也让他见识到东方世界生吃文化的精髓。汉尼拔似乎找到了走出童年阴影的出口,他开始杀人,吃人,在血腥中得到灵魂的暂时安宁。
杀害妹妹的仇人,一个接一个凄惨的死去。汉尼拔和紫夫人之间也渐渐产生若有若无的情愫,可是此时,灵魂深陷泥沼的少年汉尼拔还留下什么来爱呢?。1999年,澳门回归中国前。澳门司警马振成因惹上是非遭停职,警察生涯即将终结。马振成与伙计仍然夜蒲,盲打误撞遇上一名神秘少女张碧欣(梁洛施饰)。张碧欣随之跟着马振成回家,醉酒醒来的马振成以为自己与对方有了一夜情,再加上碧欣声称是他与初恋情人分手后生下的女儿,更加令马振成错愕不已。
碧欣因欠租数月以致无家可归,其心爱的狗狗伊莎贝拉亦被无良业主赶走,下落不明。身为父亲的马振成希望能弥补以往的责任,其后碧欣坚决要与马振成同住,令一向放浪的马振成生活顿起变化。
为求自保,马振成企图以身犯险令自己得以脱罪,他的好友杜Sir亦屡劝无效。张碧欣欢欣鼓舞地准备与父亲落草,对着同校男生也难掩得意之色。然而渐渐地马振成从张碧欣身上,体会到什么是责任。。