平静的小镇在寒冬里迎来了火热的一天。年轻的薇安萝雪(朱丽叶特-比诺什JulietteBinoche饰))带着女儿来到这里,在当地教堂的对面开了一间名为“天上人间核桃糖”的巧克力店。巧克力香浓的气味在小镇上空飘荡,吸引众多小镇居民,而神奇的是,薇安萝雪每次做出来的巧克力,都能满足顾客的心理需求,发掘他们心中隐蔽的渴望。很多人原本封闭灰暗的生活有了新的色彩。但是,这却激怒了镇里的神父和贵族,他们视薇安萝雪为异类,镇里出现了对立的两派。而这时,吉普赛人洛克斯(强尼戴普JohnnyDepp饰)远道而来,加入了薇安萝雪的阵营,他令薇安萝雪勇敢地打开了自己内心的欲望,二人共浸爱河,却想不到神父盘算着如何把这个“不祥”女子赶出小镇,于是,新旧观念的大碰撞开始了。
Vianne 和她六岁的女儿 Anouk 跟随北风漂流穿越欧洲,就像 Vianne 的母亲一样。1959 年,四旬期开始时,他们到达了一个安静的法国村庄,村长由雷诺伯爵 (Comte de Reynaud) 监管。薇安开了一家巧克力店;尽管与镇上的居民不太合拍,但她还是开始吸引一些村民来到她的店里。雷诺不承认妻子离开了他,他公开反对维安在四旬斋期间诱惑人们。
维安的年长女房东阿尔芒德是她最早的盟友之一。阿曼德的女儿卡罗琳不让她见孙子卢克,因为她是一个“坏影响”。维安安排他和他的祖母在巧克力店见面,他们在那里结下了不解之缘。在发现他们的秘密会面后,卡罗琳透露她的母亲患有糖尿病,但她在参观商店时仍然继续吃巧克力。
维安与约瑟芬建立了友谊,约瑟芬受到当地咖啡馆老板丈夫塞尔吉的身体虐待。通过他们的友谊,约瑟芬在塞尔日殴打她后鼓起勇气离开,搬去与维安和阿努克住在一起。当她在巧克力店工作并学习手艺时,她的信心慢慢增强。与此同时,在雷诺的指示下,塞尔吉试图弥补他的虐待行为,最终要求约瑟芬回到他身边,但她拒绝了。那天晚上晚些时候,醉酒的谢尔盖闯入商店,袭击了两名妇女,但约瑟芬把他打晕了。
随着维安和雷诺之间的竞争加剧,一群罗马尼河部落在村庄附近扎营。尽管镇上的大多数人都反对他们的存在,薇安还是拥抱了他们,她和领袖鲁克斯之间产生了相互的吸引力。他们在鲁的船上与村民一起为阿尔芒德举办生日聚会。当卡罗琳看到卢克和他的祖母跳舞时,她开始接受阿尔芒德对她儿子生活的影响可能是积极的。派对结束后,吕克带阿曼德回家,约瑟芬和阿努克在船上睡着了,塞尔吉放火烧了船,而鲁和维安在河里的驳船上做爱。火灾中没有人受伤,但薇安感到震惊。阿芒德后来在家中去世,并被卢克发现,这对他和他的母亲来说都是毁灭性的打击。与此同时,Roux 收拾行李并与他的团队一起离开。
雷诺最初认为这场火灾是神的干预,直到塞尔日承认是他点燃的,并说他认为这是他想要的。雷诺吓坏了,命令他离开村庄,不要再回来。
随着北风的回归,薇安娜认为她无法战胜雷诺,并决定继续前进。现在归属该镇的阿努克拒绝前往,在一场混战中,装有维安母亲骨灰的瓮破裂了,骨灰散落在地板上。在回收骨灰的过程中,维安看到了镇上的人们以及她对他们生活的积极影响,并决定留下来。
尽管镇上的情绪发生了变化,雷诺仍然坚决不吃任何巧克力。复活节前的星期六晚上,雷诺看到他所吸引的卡罗琳离开了巧克力店,他感到非常沮丧。当天晚上,他闯入商店,砸碎了复活节特制的橱窗展示。一小块巧克力落在他的嘴唇上后,他吞下了橱窗里的大部分巧克力,然后泪流满面地睡着了。第二天早上,维安叫醒了他,给了他一杯饮料来帮助他。雷诺为自己的行为道歉。镇上年轻的牧师亨利神父在布道中强调人性比神性更重要。
叙述者是一位成年的阿努克,他透露布道和节日很成功。半年后,雷诺和卡罗琳开始了恋爱关系。约瑟芬接管了塞尔日的咖啡馆,并将其更名为阿芒德咖啡馆。北风再次吹来,但这一次维安把她母亲的骨灰撒到了风中。阿努克总结了这个故事:鲁克斯在夏天回来与维安和阿努克在一起。