父母双亡的忠良(张国荣)投靠嫁入庞家的姐姐秀仪(何赛飞)时,处处受到姐夫的挤兑和侮辱,一怒之下用鸦片毒废了姐夫,逃到上海后,阴差阳错投入黑帮头目大大门下,成为利用色相勾引富家太太上钩再勒索其钱财的“拆白党”。 庞府老爷死后,大小姐如意(巩俐)被立为主事,为骗庞家财产,大大命忠良回到庞府引诱如意,岂料两人日久生出真情,不忍再欺骗如意的忠良独身返回上海,而如意也被大大接到上海,眼见了忠良所从事的“拆白党”勾当,心生死灰。
1966年,从新加坡返回香港想忘掉过去的周慕云(梁朝伟 饰)住进东方酒店的、同他曾经熟悉的数字2046只差一号的2047号房,开始了他的卖文生涯。眼前、曾经在他身边出现过的一个个女人(章子怡、王菲、张曼玉、刘嘉玲等 饰)经过他大脑的过影后,令他对时空产生疑惑,不但忘不了过去,一幕幕往事反而更加挥之不去。 为了与过去作更好的告别,他将生活的点点滴滴化为文字,写下小说《2046》(说只要搭上了前往2046的列车,人们就可以找回失去的记忆)。
段小楼(张丰毅)与程蝶衣(张国荣)是一对打小一起长大的师兄弟,两人一个演生,一个饰旦,一向配合天衣无缝,尤其一出《霸王别姬》,更是誉满京城,为此,两人约定合演一辈子《霸王别姬》。但两人对戏剧与人生关系的理解有本质不同,段小楼深知戏非人生,程蝶衣则是人戏不分。 段小楼在认为该成家立业之时迎娶了名妓菊仙(巩俐),致使程蝶衣认定菊仙是可耻的第三者,使段小楼做了叛徒,自此,三人围绕一出《霸王别姬》生出的爱恨情仇战开始随着时代风云的变迁不断升级,终酿成悲剧。