書生孔雪笠,是孔聖人的後裔,為人寬厚有涵養,善於作詩。他有位摯友在浙江天台當縣令,來信請他去。孔生應邀前往,而縣令恰恰去世了。他飄泊無依,窮困潦倒,回不了家,只好寄居在菩陀寺,被寺僧僱傭,抄錄經文。
菩陀寺西面百步開外,有單先生家的宅院。單先生是世家子弟,因為打了一場大官司,家境敗落,人口也少了,便遷移到鄉下居住,這座宅子於是空閒起來。有一天,大雪紛飛,道上靜悄悄的沒有行人。孔生偶然經過單家門口,看見一個少年從裡面出來,容貌美好,儀態風雅。少年看到孔生,便過來向他行禮,略致問候以後,就邀請他進家說話。孔生很喜歡他,非常高興地跟他進了門。見房屋雖然不太寬敞,但是處處懸著錦緞幃幔,牆壁上掛著許多古人的字畫。案頭上有一冊書,封面題名《瑯嬛瑣記》。他翻閱了一下,內容都是過去從未見過的。
孔生見少年住在這座宅院,以為他是單家的主人,也就不再問他的姓氏家族了。少年詳細地詢問了孔生的經歷,很同情他,勸他設館教書。孔生歎息道:「我這流落在外的人,誰能推薦我呢?」少年說:「如果不嫌棄我拙劣,我願意拜您為師。」孔生大喜,不敢當少年的老師,請他以朋友相待。便問少年說:「您家裡為什麼老關著大門?」少年回答道:「這是單家的宅子,以前因為單公子回鄉居住,所以空閒了很久。我姓皇甫,祖先住在陝西。因為家宅被野火燒了,暫且借居安頓在這裡。」孔生這才知道少年不是單家的主人。當晚,兩人談笑風生,非常高興,少年就留下孔生和他同床睡了。
第二天一大早,就有個小書僮進屋來生著了炭火。少年先起床進了內宅,孔生還圍著被子在床上坐著。書僮進來說:「太公來了。」孔生大驚,急忙起床。一位白髮老人進來,向孔生殷切地感謝說:「先生不嫌棄我那愚頑小子,願意教他唸書。他才初學讀書習字,請不要因為朋友的關係,而按同輩看待他。」說完後,送上一套錦緞衣服,一頂貂皮帽子,鞋和襪子各一雙。老人看孔生梳洗完了,於是吩咐上酒上菜。房內擺設的桌椅和人們穿著的衣裙光彩耀眼,不知道是什麼東西做成的。酒過數巡,老人起身告辭,提上枴杖走了。
吃完了飯,皇甫公子送上所學的功課,都是些古文詩詞,並無當時的八股文。孔生問他是何緣故,公子笑著回答說:「我不是為了求取功名。」到了傍晚,公子又擺上酒菜說道:「今夜盡情歡飲,明天便不允許這樣了。」又喊書僮說:「看看太公睡了沒有?如果睡了,可悄悄把香奴叫來。」書僮去不久,先用繡囊把琵琶帶了回來。過了片刻,一個侍女進來,身穿紅裝,艷麗無比。公子讓她彈奏《湘妃》曲,香奴用象牙撥子勾動琴弦,旋律激揚哀烈,節拍不像以前所聽到的。又讓她用大杯斟酒,二人一直喝到三更天才罷。
第二天,兩人早起一同讀書。公子非常聰慧,過目成誦。兩三個月後,下筆成文,令人驚歎叫絕。他們約好每五天飲酒一次,每次飲酒必定叫香奴來陪。一天晚上,喝到半醉的時候,孔生的兩隻眼睛緊緊地盯住了香奴。公子已經明白了他的心意,說:「這個侍女是老父親撫養的。您離家既遠又無妻室,我替您日夜籌劃已經很久了,想為您找一位美貌的妻子。」孔生說:「假若真要幫我的忙,必須找一個像香奴這樣的。」公子笑著說:「您真正成了『少見而多怪』的人了,要是認為香奴漂亮的話,那您的心願也太容易滿足了。」
過了半年多,孔生想到郊野去遊玩,到了大門口,見兩扇門板外邊上著鎖,便問公子是什麼原因,公子說:「家父恐怕結交一些朋友擾亂心緒,所以閉門謝客。」孔生聽說後也就安下心來。
當時正值盛夏濕熱季節,他們便把書房移到園亭中。孔生的胸膛上突然腫起一個像桃樣的瘡癤,過了一夜竟然長得像碗一樣大了,他疼痛難忍,呻吟不止。公子朝夕探望,連吃飯睡覺都顧不上。又過了幾天,孔生痛得更加厲害,漸漸不能吃喝了。太公也來探望,父子相對歎息。公子說:「我前天夜裡考慮,先生的病情,只有嬌娜妹妹能冶療。已派人到外祖母家去叫她了,怎麼這麼久還沒到來?」話剛說完,書僮進來說道:「娜姑到了,姨婆和松姑也一同來了。」父子倆急忙進了內宅。一霎時,公子領著妹妹嬌娜來看孔生。嬌娜年約十三四歲,美艷聰慧,窈窕多姿。孔生一見到她的美貌,頓時忘記了呻吟,精神也為之一爽。公子便對妹妹說:「這是我的好朋友,我們不亞於同胞兄弟,妹妹要好好為他醫治。」嬌娜於是收起自己的羞容,垂著長袖,靠在床上為孔生診斷病情。手把手之間,孔生聞到嬌娜身上散發著的芳香勝於蘭花。嬌娜笑著說:「應該得這種病,心脈都動了。病情雖然危急,但是還可醫治;只是皮膚瘡塊已經凝結,非割皮削肉不可。」說完就脫下手臂上的金鐲安放到孔生的患處,慢慢壓了下去。瘡癤突起一寸多,高出金鐲以外,而瘡根的紅腫部位,都被收在鐲內,不像以前如碗那樣大了。嬌娜又用另一隻手掀起衣襟,解下佩刀,刀刃比紙還薄。她一手按鐲一手握刀,輕輕沿著瘡根割去。紫血順著刀流出來,沾染了床席。孔生貪戀嬌娜的美姿,不僅不覺得疼痛,反而還怕早早割完,沒法再和她多偎傍一會兒。不多時,把瘡上的爛肉都割了下來,圓團團的就像樹上削下來的瘤子。嬌娜又叫拿水來,把割開的傷口洗淨。然後從嘴裡吐出一粒紅丸,像彈丸一樣大小,放到割去了瘡癤的肉上,用手按著它旋轉。才轉了一圈,孔生就覺得熱火蒸騰;再一圈,便覺得習習發癢;轉完三圈,已是渾身清涼,透入骨髓。嬌娜收起紅丸放回嘴裡,說:「治好了!」說完便快步走了。孔生一躍起身追出門外感謝,覺得長時間的病痛像是一下子全沒了。而心裡卻掛念苦想著嬌娜的美貌,再也無法控制自己。
從此孔生閉卷呆坐,百無聊賴。公子已經看出他的心事,說:「我為您物色了很久,終於選得一位好姑娘。」孔生問:「是誰呀?」公子回答說:「也是我的親屬。」孔生苦想了好長時間,只是說:「不必要了。」然後面對牆壁吟誦元稹的詩句道:「曾經滄海難為水,除卻巫山不是雲。」公子領會了他的意思。說:「家父仰慕您的大才,常想聯為婚姻。只是我僅有一個小妹嬌娜,年齡又太小。我還有個姨表姐阿松,已十八歲了,長相不俗。如果不信的話,松表姐天天都來遊園亭,您等候在前廂房,可以望見她。」孔生便按公子說的到了那裡,果然見嬌娜和一個美人一起來了。這女子畫眉彎如蠶蛾的觸鬚,纖瘦的小腳穿著鳳頭繡鞋,與嬌娜難分上下。孔生大喜,便求公子作媒。
第二天公子從內宅出來,向孔生祝賀說:「事情辦好了。」於是清掃另一個院子,為孔生舉行婚禮。這天夜裡,鼓樂齊鳴,熱鬧異常。孔生覺得好似月亮中的仙女忽然來和他同衾而臥,竟然懷疑廣寒宮殿即在眼前。未必在雲霄之上了。結婚之後,孔生心裡非常滿足。
一天夜裡,公子對孔生說:「您對我增長學問的指點我永遠不會忘懷。只是最近單公子解除官司回來,索要宅子很急。我家想要離開此地西去。看樣子已很難再相聚,因而離情別緒攪得心裡非常難受。」孔生願意跟隨他家西行。公子勸他還是回山東故鄉,孔生感到很為難。公子說:「不用憂慮,可立即送您走。」
不多時,太公領著松娘來到,拿出一百兩黃金贈送給孔生。公子伸出兩手緊握著孔生夫婦的手,叮囑二人閉上眼睛不要看。他們飄然騰空,只覺得耳邊的風聲呼呼地響。過了很久,公子說:「到了。」孔生睜開眼,見果然回到了家鄉。這才知道公子並非人類。他高興地叫開家門。母親出乎意料,又看到漂亮的兒媳,全家都非常喜悅。等到回頭一看,公子早已無影無蹤了。松娘侍奉婆母很孝順,她的美貌和賢惠的名聲,傳誦遠近。
後來孔生考中了進士,被授予延安府司理官職,攜帶著家眷上任了。他的母親因為路遠沒一同去。松娘生了個男孩,取名叫小宦。孔生後來因冒犯了御史行台而被罷官,受阻回不了家鄉。有一次他偶然到郊外打獵,碰見了一位美貌少年,騎著匹黑馬駒,頻頻回頭看他,孔生仔細看了看,原來是皇甫公子。急忙收韁勒馬,兩人相認,悲喜交加。公子邀請孔生跟他一起回家去。他們走到一村,樹木茂密,濃蔭蔽日。進了公子家,見門上飾有金色的泡釘,彷彿世族大家。孔生問嬌娜妹子的近況,知道她已經出嫁了;又知岳母也已去世,非常感慨傷心。他住了一宿回去,又和妻子一同返回來。這時,正好嬌娜也來了,她抱過孔生的兒子上下拋逗著玩,說:「姐姐亂了我家的種了。」孔生拜謝她先前的恩德,嬌娜笑道:「姐夫顯貴了,瘡口已經好了,沒忘記疼吧?」她的丈夫吳郎,也來拜見。在這裡住了兩夜才離去。
一天,皇甫公子忽帶憂愁的神色,對孔生說道:「天降災禍,您能相救嗎?」孔生雖然不知將要發生什麼事,但卻立即表示自己甘願承當。公子急忙出去,招呼全家人來到,排列在堂上向孔生禮拜。孔生大為驚異,急問緣故。公子說:「我們不是人類,而是狐狸。今有雷霆劫難,您願意以身抵擋,我們就都能生存;不然的話,請您抱著孩子走吧,免得讓您受牽累。」孔生發誓與公子全家共存亡。於是公子讓孔生手執利劍站立在門口,叮囑他說:「霹靂轟擊,也不要動!」孔生按公子說的去辦。果然見陰雲密佈,白晝如夜,昏天黑地。回頭一看住過的地方,寬大的房舍沒有了,只有一座高大的墳塚,有個深不見底的大洞穴。正在驚異不定的時候,霹靂一聲巨響,震撼山嶽;狂風暴雨驟起,把老樹都連根拔出。孔生雖然感到耳聾眼花,卻依然屹立在那裡一動不動。在濃煙黑霧之中,忽見有個鬼樣的怪物,尖嘴長爪,從深洞中抓出一個人來,隨著煙霧上升。孔生瞥了一眼那人的衣裳鞋子,覺得很像嬌娜。急忙一躍而起,用利劍向怪物剌去,隨手墮落一物。突然又一個炸雷爆裂,孔生被震倒在地,竟然昏死過去。
過了一會兒,天晴雲散,嬌娜自己慢慢甦醒過來。當她看到孔生死在身旁,便大哭著說道:「孔郎為我而死,我為什麼還活著!」松娘也從洞內出來,一起把孔生抬了回去。嬌娜讓松娘捧著孔生的頭,讓公子用金簪撥開孔生的牙齒;她自己兩手撮著孔生的腮,用舌頭把口裡的紅丸送到他的嘴裡,又口對口地往裡吹氣。紅丸隨著氣進入孔生的喉嚨,發出格格的響聲。不一會兒,孔生竟甦醒過來。見親屬們都在面前,彷彿如夢中醒來。於是一家團圓,不再驚慌,萬分喜悅。
孔生認為墓穴不可久住,提議讓大家和他一同回自己的故鄉。滿屋的人都交口稱讚,只有嬌娜不高興。孔生請她與吳郎一起去,嬌娜又怕公婆不肯離開幼子,一整天也沒商量出結果。忽然見吳家的一個小僕人,汗流滿面氣喘吁吁地來到。大家驚慌地再三追問他,才知道吳郎家也在同一天遭難,全家都死了。嬌娜聽說,頓足悲傷,啼哭不止。大家一起慰勸她。直到這時,大家一同隨孔生回歸故鄉的計劃才算定下來。孔生進城料理了幾天,回來就連夜催促整理行裝。
孔生回到家鄉後,把自己的一處閒棄的園子給皇甫公子一家住,平常反鎖著園門;只有孔生和松娘來到,才開門。孔生與公子、嬌娜兄妹在一起,下棋、飲酒、談天、聚會,親密得就像一家人。孔生的兒子小宦長大了,容貌美好,有狐狸的神情。他到城裡去遊玩,人們都知道他是狐狸生的兒子。