1941年,美國海軍情報局特工索姆斯(約翰?庫薩克 John Cusack 飾)奉命來到上海,負責調查好友康納被暗殺的真相。他以德國先驅報駐上海記者的身份游走于社會名流的酒會。他借助同納粹工程師穆勒太太的情人關系消除猜疑、獲取情報。在一次賭局中,他結識了黑幫頭目蘭亭的夫人安娜(鞏俐 飾),對方與手下的神秘暗語令他好奇。跟蹤未果,他只得繼續打探。為了調查康納的死因,他秘密約見了康納的線人。然而,兩人的會面卻因為日本軍隊追查地下黨而破產。一次偶然的機會,索姆斯再次與安娜重逢,并且在她的引薦中結識了上海黑社會頭目安東尼?蘭亭(周潤發 飾)及日本情報處田中大佐(渡邊謙 飾)。在調查中,索姆斯漸漸發現康納的死跟一個神秘的日本女人(菊地凜子 飾)有關……