1928年,伪满洲国的日本翻译伊丹英彦(仲村亨)离开中国情人丁慧(章子怡)返回日本,数年后他再回中国来到上海时,变身高级特务。而此时丁慧已成为地下抗日组织的成员,并与该组织首领谢明(冯远征)相爱。抗日组织去火车站接从外地聘请的暗杀日本情报人员山本的杀手时,误认其为小职员司徒(刘烨),混乱中,丁慧杀死司徒女友依玲(李冰冰),司徒则被伊丹英彦抓获。
对一系列遭遇无比迷惑的司徒被释放后,发誓要为依玲报仇。丁慧与伊丹英彦重逢,成为两股势力互相设局要利用的重要棋子,她本人正为误杀无辜饱受内心折磨。某个日本会所举办的舞会上,伊丹英彦告诉丁慧山本与谢明均已死,丁慧震惊想刺杀伊丹英彦之际,司徒持枪闯进舞会。。夏琳(徐静蕾 饰)是一名杂志社记者,聪明漂亮,身边不乏追求者,却因种种原因一直单身。与她形成鲜明对比的是其母亲朱美娥(潘虹 饰),已经历经了三次婚姻。偶尔收到的匿名情书让夏琳为之心动,也让她对这个写信人产生了莫名好感。随着几个男人的陆续出现,夏琳的生活发生了改变。一个是风流倜傥的严春生(莫少聪 饰),他生活情趣浓厚,属于情人类,另一个是下岗工人小东(倪志强 饰),属于勤俭持家的伴侣型,第三个是旧情人金鹏程(严宽 饰),最后一个是餐馆杂工雷涛(刘耕宏 饰),他浑身充满了阳刚之气。游走于四个男人之间,夏琳却不知该如何选择......。