周生與成生不僅是同學,而且是一對很要好的朋友。成生家境清貧,一直靠周生接濟。周生年長,成生稱周生妻子為嫂。逢年過節(jié),兩家更是不分彼此。周生之妻產后身亡,他又娶了王氏。因王氏很年輕,成生不敢求見。有一天,王氏弟弟來看姐姐,周生在內室擺酒款待。正吃飯時,成生過來了。周生請他入席,但成生不肯,執(zhí)意要走。周生便將酒席移到客廳,把成生追回來,他才肯入席。幾個人剛落座,就聽人報告說周家莊園的仆人挨了縣官的板子。原來是黃吏部家的牛踩了周家的莊稼,于是發(fā)生爭吵。黃家的牧童跑回去告訴黃吏部,黃吏部就將周家仆人送進官衙,并打了他的板子,周生問清原由后,非常氣憤地說:“黃家狗牧童怎么敢這樣!他父親是我祖父的仆人,而今黃家勢力大,他就不認識人了嗎?”周生憤然難平,要找黃吏部論個是非。成生拉住周生,勸他說:“強盜世界里哪分什么青紅皂白?何況如今的縣官大多就是不拿刀槍的半個強盜。”但周生不聽勸阻,成生勸得都流淚了,周生才作罷。周生的怒氣依然難消,一晚上沒睡好覺。天亮時,他對家人說:“黃家欺負我,是我的仇人,這且不說;縣官是朝廷的命官,而不是有錢有勢人家的官,縱然民間發(fā)生爭吵,也必須雙方到堂才可處置,怎么能像狗一樣聽人使喚呢?我也要去告黃家仆人,看他怎么處理。”周生家人也都鼓動他去。于是,周生決定到縣衙去告黃家的狀。誰知,周生的狀紙竟被縣官扔到堂下,根本不受理。周生當堂怒斥縣官,縣官惱羞成怒,竟將周生打入牢房。周生告狀的事成生還不知曉。中午他到周生家才聽說。當他急急忙忙趕到縣城,打算勸阻周生時,周生已被收監(jiān)。成生急得直跺腳,但又沒辦法可想。其時,縣里抓到三個海盜,為了懲罰周生,縣官和黃吏部賄賂海盜,指使他們咬定周生是同伙。接著,縣官又根據(jù)海盜的口供,革除周生的功名,并嚴刑拷打他。成生探獄時,兩人都有說不盡的酸楚。他們商量到京城去告御狀。周生說:“我被關在大牢里,好像鳥被鎖在籠子里。雖有一個小弟,但他只能給我送送囚飯。”聽周生這么一說,成生當即表示:“這是我應盡的職責。朋友有難不相助,還用朋友干什么!”成生進京告狀去了。當周生弟弟給他送路費時,他早已上路了。
成生來到京城,卻苦于告狀無門。聽說皇帝要外出打獵,他就先躲在木材堆里。一會兒皇帝的人馬路過這里,成生便跪拜喊冤。于是,皇帝批了御狀,派人送到部院審理。這時,案子發(fā)生已過去10 個月,周生被苦打成招,判處死刑。部院接到御狀,驚駭異常,立即復審。這一來,黃吏部也嚇壞了,忙策劃殺掉周生。他買通看牢門的,斷絕了周生的食物。周生弟弟送飯來,看守堅決不讓他進。成生又到部院叫冤。院臺這才提問周生,見周生早已餓得支撐不住身體,院臺大怒,用木杖打死看守。黃吏部見勢不妙,便暗地里賄賂了幾千兩銀子,請人幫著說情,才以免職了事。縣官則因貪贓枉法被充軍流放。
周生獲釋回家后,更把成生看成是肝膽相照的摯友。而成生經過打這場官司,更看破紅塵,邀周生同去山林隱居。周生留戀嬌妻不肯去,常常笑成生過于迂腐。成生聽了也不說什么,但自己隱居的決心更堅定了。有好長一段時間,他沒到周生家去。周生便派人去成家打聽,成家以為他在周家。兩家都沒見成生,大家才發(fā)現(xiàn)情況不妙。周生忙派人到山谷、寺廟尋找,又時常接濟成生的兒子。過了八九年之后,有一天,成生突然回來了。他全身道士打扮,儼然是一個道道地地的道士。周生見到老朋友,拉著他的手高興地說:“你到哪里去了,讓我派人到處查找?”成生笑答:“我是閑云野鶴,沒有固定的地方。好在我這些年身體還算健康。”周生忙吩咐擺酒宴。酒席上,周生想讓成生卸下道士裝束,但成生卻笑而不答。周生說:“你好糊涂,為什么像扔掉鞋子那樣拋棄了妻小呢?”成生笑著說:“不是這么回事,是別人要拋棄我,我又能拋棄誰呢?”問他住在哪里,他說住在勞山上清宮。這天晚上,他們同床而睡。周生夜里作夢,夢見成生赤身伏在自己身上,壓得他喘不過氣。周生驚問這是做什么,成生不回答。周生忽然驚醒,喊成生沒人應,坐起來一看,成生已無影無蹤。再定眼一看,竟發(fā)現(xiàn)自己睡在成生這一頭。周生驚奇他說:“昨晚我并沒有醉,為什么這樣顛三倒四呢?”他趕緊喊叫家人,家人用燈火一照,發(fā)現(xiàn)他已變成成生,周生本來長著不少胡須,現(xiàn)在卻沒剩幾根,拿鏡子一照,連自己都不敢認了。他驚訝地說:“成生在這里,我周生到哪里去了?”不過,周生很快就明白過來了:這是成生使的幻術,目的是想讓自己歸隱。已變成了成生的周生想進內房,但姜弟見他面貌變了,不許他進去。周生無法解釋,馬上叫仆人備馬去找成生。幾天后,成生到了勞山。馬跑得快,仆人步行速度跟不上。周生便在樹下休息。許多道士往來不斷,有一個道人看了他幾眼,周生便上前打聽成生。那道人說:“聽說過這個人,好像在上清宮。”說完他就走了。周生見他沒走多遠,又跟一個人說話,但也沒說幾句就走開了。與道士說話的那個人走過來,周生一看,竟是自己的同窗好友。他看見周生,驚訝地說:“好幾年沒見面,別人都以為你在名山學道,誰知你現(xiàn)在還在人間游戲。”周生對他講了自己變形的事。那人吃驚地說:“我剛才見到他,以為是你。他去了沒多久,還沒走遠。”這時,仆人趕到了。周生騎馬急追成生,但追了半天,也沒見成生的影子。定眼一看,前面空寥無人,周生感到進退兩難,一時竟沒了主意。轉念一想,此時無家可歸,不如繼續(xù)追趕成生。前面的山路,坎坷艱險,根本沒辦法騎馬。于是,周生把馬交給仆人帶回家,自己則沿著彎彎曲曲的山路前行,打遠處看見一個童子坐在路邊,周生趕忙奔過去問路,并說明原因。那童子說自己是成生的徒弟,替成生背衣服和糧食。聽說周生執(zhí)意要找成生,那童子便在前面帶路,兩人風餐露宿走了不少路。走了三天總算到了一個叫上清宮的地方,但一打聽,又不是世人所傳說的上清宮。這時已是十月中旬,山花滿路,秋高氣爽。童子進去說有客人到來,成生馬上出門迎接。周生這時才認出自己的形貌。兩人手拉手進之時,用手摸下巴,發(fā)現(xiàn)己長滿了胡須。
天亮時,周生表示堅決要回家。成生一再挽留他。三天后,他對周生說:“請你稍微休息一下,明天一早送你回去。”周生剛剛閉眼,又聽見成生說:“行李已經準備好了。”他趕忙起身跟成生走。不多久,便到了家。成生坐在路邊,而讓周生獨自回家。
周生走到自家門口,敲門無人答應,他想翻墻,頓時覺得身輕如樹葉,一下子便飛過幾道矮墻。透過窗口,他發(fā)現(xiàn)妻子正與仆人飲酒,十分親熱,于是怒火攻心。他想親手抓住他們,又擔心一人力單。他悄悄跑出來請成生幫忙,成生聽了也非常憤慨,他用劍把門撥開,周生沖了進去。仆人跳窗而出時被成生一劍砍斷了肩膀。周生抓住妻子審問,才知道早在他坐牢時妻子就與仆人有染,一怒之下,周生竟用成生的劍殺死了妻子。然后,他和成生一道出來,離家而去。突然之間,周生驚醒了,他發(fā)現(xiàn)自己的身體在床榻上。他驚嘆:“夢太離奇了,真叫人恐懼!”成生卻笑著說:“夢中的事你以為是真的,而真的事情你卻以為是作夢。”周生驚愕地問是怎么回事。成生把劍拿出來給他看,劍上還有血跡。周生害怕極了,他懷疑這是成生施的幻術。成生知道周生的想法,于是,他備好行裝送他回家。輾轉到了家鄉(xiāng),成生說:“那天晚上,我持劍等你,不就是在這里嗎?我討厭惡濁的東西,請讓我還在這里等你吧。如果你申時還不回來,我可就要自己走了。”周生回到家,只見門戶蕭條,已沒人居住。他又到弟弟家,兄弟二人見面后抱頭痛哭。弟弟告訴周生,他走了以后,嫂嫂晚上被人殺了,官府至今未捉到兇手。周生此時如夢初醒,便把自己殺妻的過程向弟弟說了,囑咐弟弟不要追究。弟弟驚呆了好一會兒。周生問兒子的情況,弟弟叫老奶奶把孩子抱來。周生囑托弟弟:“這孩子是周家后代,請你好好撫養(yǎng),我想辭別人世。”說完便去了。弟弟流著淚挽留他,周生卻邊笑邊走,并不回頭。到了野外,跟成生一道離去了。走了很遠才回頭對弟弟說: “忍事最樂。”弟弟還想說什么,卻見成生一揮衣袖,即刻不見了。