桑曉瘦弱地躺在空蕩蕩的書房裡,思念著蓮香,如餓漢盼谷熟。一天,他正在沉思,忽然有人掀門簾進來,正是蓮香。她走近床邊,譏笑地說:「你現在該相信我說的了吧。」桑曉哽咽了好久,說自己已經知罪,只求救他。蓮香說:「你已病得很重,實在沒法救。我只是來跟你永別,表明我並非嫉妒。」桑曉極其悲傷,說:「枕頭底下有一樣東西,麻煩你替我毀掉它。」蓮香找到那只繡鞋,拿到燈前,反覆細看。李氏忽然進來,一下看見蓮香,回身想逃。蓮香用身子擋住門口,李氏又窘又急,不知往哪裡走。桑曉指責她,她也無話可答。蓮香笑道:「我現在才有機會跟你當面對質。你以前說郎君的病,說不定是我惹的,現在究竟怎麼樣?」李氏低頭認錯。蓮香說:「你這麼漂亮,卻為了情愛而結仇嗎?」李氏當即伏地哭泣,乞求蓮香憐憫、救助。
蓮香於是扶她起來,詳細盤問她的身世。李氏說:「我是李通判的女兒,早夭,葬在這牆外。我像已死的春蠶,餘情未盡。與郎相聚相愛,是我的心願;而把郎君害死,實在不是我的本意。」蓮香說:「聽說鬼希望情人死,因為死後可以經常相聚,是嗎?」李氏說:「不是。男女兩鬼相逢,並沒有樂趣;如有樂趣,陰間的年輕小伙子難道少嗎!」蓮香說:「你真傻啊!天天晚上幹那種事,就是跟人也受不了,何況是跟鬼呢?」李氏問道:「狐狸能害死人,你有什麼方法不害人呢?」蓮香說:「那是采人的精血調補自己之流,我不是那一類。所以世上有不害人的狐狸,而斷斷沒有不害人的鬼,因為鬼的陰氣太盛。」桑曉聽了她們的話,才知道狐狸和鬼都是真的。好在平時見慣了,這時也一點不害怕。只是想到自己生命垂危,氣若游絲,不覺失聲痛哭。
蓮香看著李氏說:「郎君怎麼辦呢?」李氏紅著臉,說自己沒辦法。蓮香笑道:「只怕郎君健壯了,醋娘子又要吃酸楊梅了。」李氏整衣下拜說:「如有妙手回春的醫師治好郎君的病,減輕我的罪過,我今後一定永遠躲在九泉之下,哪裡還敢厚著臉皮再到人間來呢!」蓮香解開口袋拿出藥來,說:「我早知道會有今天,分別後就到仙山上採藥,歷時三個月,藥料才準備齊全。凡是色癆致死的,吃了這藥沒有不好的。不過病由什麼起,還須拿什麼做藥引,所以不得不反過來請你出力。」李氏問:「需要我幹什麼?」蓮香說:「不過要你櫻桃小嘴裡的一點香唾罷了。
我把一顆藥丸放進郎君嘴裡,麻煩你嘴對嘴給他喂點唾液。」李氏臉上泛起紅暈,低頭轉身看著自己的鞋子。蓮香開玩笑說:「妹妹所得意的只是繡鞋啊!」李氏更加羞慚,低頭也不是抬頭也不是,簡直無地自容。蓮香說:「這是你平時慣熟的動作,現在有什麼可吝惜的呢?」說著把藥丸放進桑曉嘴裡,回頭催她。李氏迫不得已,給桑曉餵了一口唾液。蓮香說:「再來!」李氏又喂一口。共餵了三四口,藥丸已嚥下去。一會兒,桑曉的肚子便咕嚕咕嚕地像打雷一般響起來。蓮香又放一顆藥丸進他嘴裡,然後自己嘴唇對嘴唇地向他口中吹氣。桑曉只覺得丹田火辣辣的,精神也振作起來。蓮香說:「好了!」李氏聽見雞叫,戀戀不捨告別走了。
蓮香因桑曉病剛好,還需調養,在鄰居搭伙不是辦法;於是就把大門反鎖,讓人以為桑曉回了家鄉,從而斷絕與外人的交往,自己日夜守護著他。李氏也每晚必到,慇勤侍候,像對姐姐一般對待蓮香。蓮香也非常喜歡她。過了三個月,桑曉完全恢復了健康。李氏幾天晚上不來:偶爾來了,看一看就走。大家在一起的時候,她也是悶悶不樂。蓮香常留她一起睡覺,她也總是不肯。一次,桑曉追出去,把她抱了回來,身子輕飄飄的好像草人。李氏見跑不掉,就和衣躺著,把身子蜷曲起來,還不到二尺長。蓮香更加憐愛她,暗地叫桑曉親暱地摟抱她,但搖也搖她不醒。後來桑曉睡著了;醒來再找她,已經不見了。以後十多天,她再也沒來。桑曉十分想念她,常拿出繡鞋來跟蓮香一起擺弄。蓮香說:「這麼窈窕裊娜,我見了也疼愛,何況男子!」桑曉說:「尋常一擺弄繡鞋她就來,我心裡確有點懷疑,但總料不到她是鬼。現在對著鞋子,想起她的容貌,實在讓人傷心。」說著流下了眼淚。
在這以前,有錢人家張某有個女兒叫燕兒,十五歲,得病出不來汗,死了。過了一夜她又醒過來,爬起來就往外跑。張家人把門閂住,出不來。她說:「我是李通判女兒的鬼魂。與桑郎相戀,留給他的繡鞋還在他那裡。我確實是鬼,你們把我關在這裡有什麼好處?」張家的人聽她話出有因,便問她怎麼到這裡來。姑娘徘徊張望,又說不出個究竟來。有人說桑曉生病回了家,姑娘極力辯解說不是真的。張家的人非常疑惑。桑曉東邊鄰居的書生聽說了,爬牆到桑曉的住處窺探,見他正跟一個美人相對說話;就突然闖進屋裡,忙亂間美人已不見了。書生吃驚地盤問桑曉。桑曉笑道:「我早就跟你說過,是雌的就收留嘛。」書生轉述了燕兒的話。桑曉便開了大門,打算去打探消息,但苦於沒有去張家的借口。
張燕兒的母親聽說桑曉果真沒回家鄉,更覺奇怪。她於是派個老僕婦去向他討繡花鞋,桑曉便拿出來交給了她。燕兒拿到鞋子很高興,試著一穿,鞋子比腳小一寸多,大吃了一驚。拿鏡子照了照自己,頓時恍然大悟,原來自己是借了別人的身軀復活了,於是把前因後果全說了出來。張母這才相信了。姑娘對著鏡子痛哭,說:「我從前的相貌,還很能令我自信,但每次見到蓮香,仍然會幾分慚愧。現在竟然變成這樣,做人還不如做鬼啊!」拿著鞋子痛哭不已,怎麼勸也勸不住。又蒙著被子躺著,給她飯吃也不吃,身上全腫了;總共七天沒吃東西,結果也沒有死,而浮腫漸漸消退;覺得餓得難忍,才又吃東西了。過了幾天,渾身發癢,皮全掉了。早上起來,睡鞋掉下來,找到一穿,大得不得了。便拿以前那繡鞋來試穿,肥瘦正合適,於是高興起來。再照鏡子,那眉毛、眼睛、臉頰,完全是原來的模樣,她更加高興了。梳洗以後去見母親,大家都吃驚地看著她。
蓮香聽說了這樁奇事,便勸桑曉托媒人求親;但桑曉因貧富差別太大,不敢貿然行事。正好張母生日,桑曉便隨同張母的子侄女婿等人前去拜壽。張母看到桑曉的名字,特意叫燕兒從簾子裡偷著辨認這個客人。桑曉最後到,燕兒飛跑出來拉住他的袖子,要跟他一起回家。張母斥責她,她才羞慚地進了內室。桑曉細看燕兒跟李姑娘一模一樣,不覺淚下,便拜倒在地不肯起來。張母把他扶起來,也不認為他無禮。桑曉出來,求燕兒的舅舅做媒。張母商量著要選好日子招他為上門女婿。
桑曉回去告訴蓮香,並跟她商量怎麼辦。蓮香惆悵了好久,就要跟桑曉告別離去。桑曉大驚,哭了起來。蓮香說:「你到別人家裡拜堂成親,我也跟著去,成什麼樣子?」桑曉打算和她回家,再迎娶燕兒,蓮香同意了。桑曉把情況告訴張家,張家聽說他原有妻室,生氣地責罵他。燕兒極力為他辯解,張家就答應了他的請求。
到成親的那天,桑曉前往張家迎親。家裡的佈置非常簡陋;到回來接花轎時,卻見從門口到大廳都用毛毯鋪地,千百隻燈籠光燦燦地排列,花團錦簇,十分富貴華麗。蓮香扶新娘進洞房,揭去蓋頭後,兩人高興得像老朋友重逢。蓮香陪著喝了交杯酒,然後細細問起還魂的事。燕兒說:「那天我心情憂鬱,無所寄托,只因身為鬼物,自己也覺得很醜惡。分手後,心中幽憤,沒回墳墓,便隨風漂泊,四處遊蕩,一見到活人就羨慕他們。白天靠著樹林草叢,晚上就信步亂走。偶然走到張家,見一個少女躺在床上,走近附上去,本不知道這樣就能活過來的。」蓮香聽了這些話,默默地若有所思。
過了兩個月,蓮香生了個兒子。產後得了急病,病情一天天沉重起來。她抓住燕兒的手臂說:「我把小孩子托付給你,我兒子就是你的兒子。」燕兒流著淚,安慰她,替她請來巫師和醫生,她總是推卻。後來病重臨危,只剩一絲兒氣息。桑曉和燕兒都哭了。蓮香忽然睜開眼說:「不要這樣!你們只求活著,我卻希望死去。如有緣分,十年後還能再見面。」說完就死了。桑曉掀開被子準備入殮,她的屍首變成了狐狸。他不忍心把她看作異類,隆重地安葬了她。她生的兒子名叫狐兒,燕兒像對待親生兒子一樣養育他。每逢清明,一定抱他到蓮香墓前哭祭一番。
後來桑曉中了舉人,家境逐漸富裕。而燕兒卻苦於不能生育。狐兒很聰明,但身體單薄多病。燕兒常常希望桑曉娶個妾。一天,丫鬟忽然說:「門外有個老太婆,帶著女兒說要賣掉。」燕兒叫讓進來。乍一見,極為驚訝,說:「是蓮香姐再生嗎!」桑曉看那女孩,真像蓮香,也很吃驚。他們問老太婆:「姑娘幾歲了?」老太婆答道:「十四歲。」「要多少聘金?」老太婆說:「我老婆子只有這一塊骨肉,只要讓她有個好去處,我也有個吃飯的地方,日後老骨頭不至於扔到山溝裡,也就滿足了。」桑曉給了她優厚的價錢,把女孩留下了。
燕兒握著女孩的手走進密室,捏著她的下巴,笑著說:「你認識我嗎?」女孩答道:「不認識。」問她的姓氏,她說:「我姓韋。父親是徐城賣酒的,死了三年了。」燕兒屈指細想,蓮香去世恰好十四年了。又仔細看女孩,儀表容貌、神態風度,沒一樣不像蓮香。於是她拍著女孩的頭頂喊道:「蓮香姐!蓮香姐!十年後相見的約定,該不會騙我!」女孩忽然像從夢中醒來,心中豁然開朗,叫了一聲:「咦!」定定地看著燕兒。桑曉笑道:「這叫『似曾相識燕歸來』啊!」女孩流著淚說:「是了。聽母親說,我出生時就會說話,他們認為不吉利,用狗血餵我,就忘了前生因緣。今天才如夢初醒。娘子不就是恥於做鬼的李妹妹嗎?」他們一起說起前生的事情,悲喜交集。
一天是寒食節,燕兒說:「這是每年我和郎君哭姐姐的日子啊。」於是跟女孩一起去,讓她親自看看蓮香的墳墓,只見荒草茂密,墳頭的樹已合抱粗了。面對此情此景,女孩也很感歎。燕兒對桑曉說:「我跟蓮香姐兩世交好,不忍分離,應讓我們的白骨同葬在一個墓穴裡。」桑曉聽從了她的話,挖開李氏的墳墓,揀出骸骨,運回來跟蓮香合葬。親戚朋友們聽說這件奇事,都穿上祭祀的服裝來到墓地,沒有邀請就來會集的有幾百人。
庚戌年我去南遊,到沂州,為雨所阻,在客店休息。有個秀才叫劉子敬,是桑曉的中表親戚,拿出同一個文社的王子章所寫的《桑生傳》,約有一萬多字,我把它讀完了。這裡記述的只是事情的梗概罷了。
異史氏說:「啊!死者追求復生,生者又希望死去。天下間所難得的,不就是人的身子嗎?遺憾的是世上具有這人身的,往往不加珍視,以至於厚著臉皮活著,不如狐狸;然後無聲無息地死掉,不如鬼物。」