1928年,日本翻译伊丹英彦(本名仲村亨)离开中国情人丁慧(本名章子怡)回到日本。几年后,他再次来到上海,变身为一名高级特务。然而,此时的丁慧已经加入了地下抗日组织,并与该组织首领谢明(本名冯远征)相爱。一次,抗日组织派人去火车站接外地聘请的暗杀日本情报人员山本,结果却误认为小职员司徒(本名刘烨)是山本,造成了混乱。在这场混乱中,丁慧误杀了司徒的女友依玲(本名李冰冰),而司徒则被伊丹英彦抓获。对于司徒来说,所有的一切都让他感到迷惑,他发誓要为依玲报仇。而丁慧与伊丹英彦的重逢,则让两股不同的势力都想利用他们。丁慧一直在为误杀无辜的女孩感到内疚,而伊丹英彦则一直在利用她。在某个日本会所举办的舞会上,伊丹英彦告诉丁慧山本和谢明都已经死了,丁慧感到震惊。就在她想要刺杀伊丹英彦的时候,司徒突然闯进舞会,手持一把枪。