1928年,偽滿洲國的日本翻譯伊丹英彥(仲村亨)離開中國情人丁慧(章子怡)返回日本,數年后他再回中國來到上海時,變身高級特務。而此時丁慧已成為地下抗日組織的成員,并與該組織首領謝明(馮遠征)相愛。抗日組織去火車站接從外地聘請的暗殺日本情報人員山本的殺手時,誤認其為小職員司徒(劉燁),混亂中,丁慧殺死司徒女友依玲(李冰冰),司徒則被伊丹英彥抓獲。 對一系列遭遇無比迷惑的司徒被釋放后,發誓要為依玲報仇。丁慧與伊丹英彥重逢,成為兩股勢力互相設局要利用的重要棋子,她本人正為誤殺無辜飽受內心折磨。某個日本會所舉辦的舞會上,伊丹英彥告訴丁慧山本與謝明均已死,丁慧震驚想刺殺伊丹英彥之際,司徒持槍闖進舞會。