欢姑是老一派的独立女性,年轻时便自梳。她与阿慧无论在人生观、性观点都各有不同,但是两人相处越久越觉默契,在言谈之中,阿慧发现欢姑年轻时同样在爱情路上迷失过,甚至与另一个女人有关。
四十年代的顺德,“自梳”是一种时尚。为了逃避买卖的婚姻,意欢(杨采妮饰)选择了自梳终身不嫁。但命运偏偏令他遇上两个重要的人。一个是他的初恋情人旺成,他贫穷却痴情。另一个是出生妓寨,嫁给丝厂老板的八姨太太玉环(刘嘉玲饰),她敢爱敢恨,对意欢暗生情愫。意欢不肯接受玉环的爱意,反而暗中与旺成交往。最后意欢怀孕,旺成却怕事撇下意欢不理。当意欢痛苦无助之际,唯有玉环对她呵护备至。玉环那种不求回报,只管去爱的情操,令意欢深深感动,并知道自己一直憧憬的爱情,原来就在身边。可惜战争来临,两人在逃难中失散……
五十年后,欢姑仍执意寻找另一半的她,最后竟真的被她找到,阿慧看着意欢与玉环的重逢,才发现她们之间隐藏着一个秘密……,另一方面,阿慧亦重新衡量自己的爱情,面对欲走还留的锺华,阿慧下了一个决定……
故事以六十年代初期为背景,折射的却是90年代人们疲惫的灵魂。
阿飞(张国荣)是上海移民,他从未见过生母,自小由养母养大,因此长大后他对生命中遇到的每一个女人都冷酷无情。放荡不羁的他先后与售票员苏丽珍(张曼玉)和舞女咪咪(刘嘉玲)同居,但后来又相继抛弃了她们。阿飞决计找到生母,为此他只身前往南洋。一直暗恋苏丽珍的警察(刘德华)目睹了苏丽珍与阿飞的决裂后,决定改行去跑船。在菲律宾,他又见到了阿飞,此时的阿飞已在一场欧斗中身负重伤。他守着阿飞死在一列返乡的火车上。
1966年,离开香港的周慕云藏起了一个秘密,直到在新加坡遇到了苏丽珍。谜一般的苏丽珍让他想起了另一个身影,那个也叫苏丽珍的女人在他心里一直是 一个没有人知道的过去。周慕云的眼光跟随着苏丽珍穿梭在赌场里,她拯救周慕云的沉溺,却不愿跟着他离开。
独自回到香港的周慕云,在平安夜巧遇旧识LuLu,然而LuLu却对以前的往事毫无记忆。LuLu想不起和周慕云的那段过去,周慕云却在LuLu居住的酒店里发现了一组似曾相识的数字:2046。2046号房曾经充满了周慕云和苏丽珍的回忆,如今只剩下LuLu与男友CC爱恨交织的痕迹。
周慕云于是搬进了2047号房间,知道了酒店老板的两个女儿王洁雯与王静雯各有心事,洁雯情窦初开,静雯与日籍男友的感情不被允许。此时新房客白玲住了进来,白玲一身风尘,撩拨起周慕云不费吹灰之力,然而当她动了真情,才发现周慕云早已封锁了内心。
于是周慕云开始动笔撰写一部名为《2046》的小说,小说中只要搭上了前往2046的列车,人们就可以找回失去的记忆。没有人想离开2046,除了一个名叫Tak的男子。热恋中的静雯不会知道,故事里她化生的冰冷机器人,曾经带给Tak最渴求的温暖,她的存在是Tak记忆里最大的秘密。
一直到公元2046年,那班神秘列车依旧定期开往2046……