根据中国古典名著《聊斋志异》改编。秦汉年间,都尉王生(陈坤饰)率王家军在西域苦战,并救回一女子小唯(周迅饰)。王生并没有看到在他到来之前,小唯刚刚吞食完人心以保持人形。九霄美狐小唯对王生一见钟情,跟随他回家后以妹妹自居,眼看王生与佩容(赵薇饰)夫妻情深,暗地里想取代佩容地位成为王生妻子。深爱着小唯且一直为她杀人取心的蜥蜴精小易几度向小唯表白,却被小唯怒吼而走。城里越来越多的人死于心脏被挖,王生誓要查个水落石出,佩容已经觉得小唯异于常人且对丈夫有意。碍于王生对小唯的一片信任,她唯有去寻求当年负气出走的旧情人庞勇(甄子丹饰)帮忙,而降魔者夏冰出于天命亦自告奋勇去除妖。佩容所作一切但求王生安好,王生心痛佩容不相信自己,小唯委曲求全希冀得到爱情,庞勇和夏冰已蓄势待发。 狐妖栩栩(薛凯琪 饰)初为人形,被捕妖器所伤,幸得王生(凌潇肃 饰)所救死里逃生。机缘巧合认识了降魔师徒二人,拜夏老(罗家英)为师,和夏冰(吴映洁 饰)姐妹相称,开始追随二人降妖附魔。然而善良的栩栩却因为出入人世,被已婚的男人欺骗。为情所伤的栩栩妖性大发误杀了夏老,原本的生活轨迹发生转折,化名小唯,从此过上了以吞食人心的孤独人生。没想到,自己心里一直无法忘却在琅琊邑拼死救下的恩人王生,更没想到会在太原城重新碰到他。此时的王生已经和佩蓉(陈怡蓉 饰)结婚,过着幸福美满的生活。看到孤苦飘零的小唯,王生夫妇决定收留她在府上。可是令他们没想到的是,小唯因为无法忘却对王生的爱恋,因爱生恨,决意要不择手段的取得王生的心。而此时追查杀死师傅凶手的夏冰在庞勇(李宗翰 饰)的陪伴下也一路尾随小唯的气息来到了太原城内。 该片改编自蒲松龄的《聊斋志异》中的故事。