1928年,伪满洲国的日本翻译伊丹英彦(仲村亨)离开中国情人丁慧(章子怡)返回日本,数年后他再回中国来到上海时,变身高级特务。而此时丁慧已成为地下抗日组织的成员,并与该组织首领谢明(冯远征)相爱。抗日组织去火车站接从外地聘请的暗杀日本情报人员山本的杀手时,误认其为小职员司徒(刘烨),混乱中,丁慧杀死司徒女友依玲(李冰冰),司徒则被伊丹英彦抓获。
对一系列遭遇无比迷惑的司徒被释放后,发誓要为依玲报仇。丁慧与伊丹英彦重逢,成为两股势力互相设局要利用的重要棋子,她本人正为误杀无辜饱受内心折磨。某个日本会所举办的舞会上,伊丹英彦告诉丁慧山本与谢明均已死,丁慧震惊想刺杀伊丹英彦之际,司徒持枪闯进舞会。。清朝末年,慈禧(斯琴高娃 饰)突然身染怪病,御医们一批批来了又走,都没能开出药方治好太后的病。慈溪大怒,命人将御医们全部斩首。斩首这天,刑场旁边放着丰盛的酒席,好让御医们死前饱餐一顿。一个江湖郎中汤元元(陈佩斯 饰)因饥肠辘辘,不知就里就坐上席间大吃大喝。主斩官洪禄以为汤元元是问斩的御医,喝人将他捉了上来。汤元元发现洪禄正不停打嗝,随口说了个药方竟治好了他的病。太后得知此事,忙命人暗中吩咐洪禄带汤元元入宫为她看病。汤元元最终命运如何?。