根據中國古典名著《聊齋志異》改編。
秦漢年間,都尉王生(陳坤 飾)率王家軍在西域苦戰,並救回一女子小唯(周迅 飾)。王生並沒有看到在他到來之前,小唯剛剛吞食完人心以保持人形。九霄美狐小唯對王生一見鍾情,跟隨他回家後以妹妹自居,眼看王生與佩容(趙薇 飾)夫妻情深,暗地裡想取代佩容地位成爲王生妻子。深愛著小唯且一直爲她殺人取心的蜥蜴精小易幾度向小唯表白,卻被小唯怒吼而走。
城裡越來越多的人死於心臟被挖,王生誓要查個水落石出,佩容已經覺得小唯異於常人且對丈夫有意。礙於王生對小唯的一片信任,她唯有去尋求當年負氣出走的舊情人龐勇(甄子丹 飾)幫忙,而降魔者夏冰出於天命亦自告奮勇去除妖。
佩容所作一切但求王生安好,王生心痛佩容不相信自己,小唯委曲求全希冀得到愛情,龐勇和夏冰已蓄勢待發。