故事发生在1973年的马萨诸塞州,乔(杰克•吉伦哈尔 Jake Gyllenhaal 饰)是一个生活在那里的心碎的男人。曾经,他也有过堪称完美的生活,和未婚妻戴安娜(Careena Melia 饰)即将携手步入婚礼的殿堂,可是,在一间咖啡馆中,戴安娜成为了一场枪击事件里的无故牺牲者,戴安娜的死将乔瞬间抛入了绝望之中。 虽然戴安娜死了,但乔还是和戴安娜的父母本(达斯汀•霍夫曼 Dustin Hoffman 饰)以及周周(苏珊•萨兰登 Susan Sarandon 饰)生活在一起。本和周周早已经将乔当成是自己的家人了。他们邀请乔一同参与当地的房地产建设经营工作,为了摆脱精神的痛苦,乔将所有的精力都投入了工作之中。。1966年,从新加坡返回香港想忘掉过去的周慕云住进东方酒店的、同他曾经熟悉的数字2046只差一号的2047号房,开始了他的卖文生涯。眼前、曾经在他身边出现过的一个个女人经过他大脑的过影后,令他对时空产生疑惑,不但忘不了过去,一幕幕往事反而更加挥之不去。
为了与过去作更好的告别,他将生活的点点滴滴化为文字,写下小说《2046》(说只要搭上了前往2046的列车,人们就可以找回失去的记忆)。。来到21世纪的锦衣卫,要从洪西东身上夺回夜明珠。结果却遇上了长相一样的洪晓东,再加上随身的龙纹玉佩感应到九转夜明珠;他们计划杀了洪西东之后取回夜明珠,再设法回到明朝向主上交代。他们为了拿到夜明珠不得不暂时生活在这个时代中,彭泽和徐啸天不断地因为现代化的厕所、电梯、吸尘器等等事物而备受干扰,致使追杀洪西东的任务困难重重。。