常大用,是洛陽人,特別喜愛牡丹,聽說曹州牡丹甲齊魯,就一心想去看看。恰好因為有別的事來到曹州,常大用就借住在一家官宦人家的花園裡。當時是二月天,牡丹還沒開放。他整天在園中徘徊,注視著那幼芽,希望它早日開花,並作了一百首懷牡丹詩。不久,牡丹漸漸含苞待放,而他的盤纏也快用完了。他就找了些春天的衣服典當點錢生活,整日流連於牡丹園中,忘了回家。
一天凌晨,常大用來到牡丹花園,看見一位女郎和一位老婆婆已經先在那裡。他懷疑是富貴人家的家眷,就趕緊回來了。黃昏時候,他又去,又看見她們,就從容地躲在一旁。遠遠地偷看她們,只見那女郎穿著十分艷麗的宮裝,令人眼花繚亂。常大用迷惑不解,轉念一想:這一定是位仙人,人間哪有這麼美麗的女子!急忙返回去尋找她們。他轉過假山,正好遇到老婆婆,那女子正坐在石頭上,他們相互看見都吃了一驚。老婆婆用身子擋住女郎,呵叱常大用說:「大膽狂生,你想幹什麼?」常生直挺挺地跪著說:「娘子必定是神仙!」老婆婆斥責他說:「如此妄言,就該捆起來送到縣官那裡!」常生非常害怕。女郎微笑著說:「我們走吧!」就轉過假山走了。常生往回走,連腳也邁不動了。心想那女郎回家告訴父母,必定有人來辱罵他。他仰面躺在床上,後悔自己鹵莽冒失;又暗自慶幸女郎臉上沒有怒容,也許沒把這事放在心上。他一會兒後悔,一會兒害怕,折騰了一夜晚病倒了。第二天太陽老高了,不見有來興師問罪的,常大用心情才慢慢平靜下來。他回想起女郎的音容笑貌,又轉害怕為想念了。這樣過了三天,憔悴得快要死了。
這天深夜,僕人已經睡熟了,常生還點著蠟燭沒睡。忽然上次見過的那個老婆婆走進來,手中捧著個杯子說:「我家葛巾娘子親手調和了毒藥,要你趕快喝了。」常生聽了非常害怕,隨後就說:「我與娘子從來沒有什麼怨仇,何至於賜我死呢!既然是娘子親手調和的,與其相思得病,不如服毒死了好!」於是接過懷子就喝了下去。老婆婆笑著接過懷子走了。常生覺得藥味又涼又香,不像是毒藥。一會兒,覺得胸中寬鬆舒暢,頭腦清爽,酣然入睡。一覺醒來,紅日滿窗。常大用試著起來,病全好了,心中更加相信她們是神仙。沒有機會巴結她們,只能在沒人的時候到她站過、坐過的地方,虔誠地跪拜,默默地禱告。
一天,他正在園中散步,忽然在樹林深處,迎面遇見那女郎。幸好沒有別人,常生高興極了,立即跪在地上。女郎過來拉他,常大用忽然聞到女郎身上有種奇異的香氣,就手握著女郎雪白的手腕站起來,只覺女郎皮膚柔軟細膩,令人骨節欲酥。正想說話,老婆婆忽然來了。女郎叫常大用藏到石頭後面,指著南邊說:「夜裡你用梯子翻過牆去,見四面紅窗的房子,就是我住的地方。」說完匆匆走了。常生悵然若失,像掉了魂,不知道女郎到什麼地方去了。到了夜裡,他搬了梯子登上南邊的牆頭,看見牆裡邊已經有個梯子放在那兒。常生高興地踩著梯子下去,果然看見有座四面紅窗的房子。聽到屋裡有下棋的聲音,不敢往前走。在外面站了很長時間,只好翻牆頭回去。一會兒,再過來,棋子的聲音仍然頻頻作響。常生慢慢靠近窗戶偷看,見女郎同一個素色衣服的美人正在下棋,老婆婆也坐在那兒,有一個丫鬟在旁邊侍候。他只好又返回去。往返了三次,已經三更天了。常生伏在梯子上,聽到老婆婆出來說:「梯子!誰放在這裡的?」叫丫鬟來一起把梯子搬走了。常生爬上牆頭,想下去沒有梯子,只好悶悶不樂地回去。
第二天夜裡常生又去,梯子已經放在那兒。幸虧寂靜無人,常生進去,看見女郎獨自坐著,似乎在想什麼事。看見常生,女郎吃驚地站起來,羞羞答答地斜過身子站著。常生作了個揖說:「我自以為福分淺薄,恐怕同仙人沒有緣份,想不到會有今天!」說著就親熱地擁抱她,只覺得她腰身纖細只有一把,呼出的氣息像蘭花那麼清香。女郎撐拒著說:「你怎麼這樣性急?」常生說:「好事多磨,慢了怕鬼嫉妒!」話沒說完,就聽見遠處有人說話。女郎急忙說:「玉版妹子來了,你可暫時藏到床底下!」常生聽從了。不一會兒,一個女子進來,笑著說:「敗軍之將,還敢和我再戰一場嗎?我已經烹好了茶,特來邀你痛痛快快地玩一夜。」女郎借口睏倦推辭。玉版再三請求,女郎坐著堅決不去。玉版說:「如此戀戀不捨,是不是有男人藏在房裡?」強拉著她出門走了。常生爬出來,恨死了玉版。就搜索女郎的枕頭蓆子,希望得到一件女郎遺留的東西。可是房中並沒有香奩等物,只有床頭上放著一個水晶如意,上邊繫著條紫巾,芳香潔淨,十分可愛。常生揣到懷裡,翻牆回到住處。整理自己的衣衫時,聞到沾染的香味依然濃郁,使他對女郎的傾心愛慕更強烈了。可是想到趴在床底下的恐懼心情,又怕被人發覺受到懲罰,想來想去不敢再去了。只有把如意珍藏起來,希望她能來尋找。
隔了一夜,女郎果然來了,笑著說:「我向來以為你是個正人君子,想不到你竟是個小偷!」常生說:「確實如此!之所以偶然一次不做君子,是希望能得到如意。」說著就把她攬在懷裡,替她解掉衣裙。女郎潔白的肌膚剛露出來,溫熱的香氣便四處流散。偎抱之間,覺得她鼻息汗氣,無處不香,常生就說:「我本來就認為你是仙人,如今更知道不是假的。有幸得到你的賞識,真是三生有緣!只是怕像杜蘭香的下嫁,終成離恨!」女郎笑著說:「你過慮了。我不過是鍾情的少女,偶然為情愛動了心。這件事你一定要謹慎秘密,怕那些愛搬弄是非的人,捏造黑白;那樣你不能插翅飛走,我也不能乘風駕雲,遭受災禍而分離比好離好散就更慘了!」常生認為她說得很對;但始終認為她是仙人,就再三詢問她的姓氏。女郎說:「你既然認為我是神仙,仙人何必留姓傳名呢?」常生問:「那老婆婆是什麼人?」女郎說;「她是桑姥姥,我小時受過她的照顧,所以待她與別的僕人不同。」接著就起來想走,說:「我那裡耳目多,在外面不能待得時間太長,有空我還會再來。」臨別的時候,向常生討還如意,說:「這不是我的東西,是玉版遺留在我那兒的。」常生問:「玉版是誰?」女郎說:「是我的叔伯妹妹。」常生把如意還給她,她就走了。
女郎走後,常生的被子枕頭都沾染了異香。從此女郎每隔兩三晚上就來一趟。常生迷戀她,不再想回家;但是盤纏全花光了,就想賣馬。女郎知道以後,說:「你為了我的緣故,才花光了盤纏,又典當了衣服,我實在過意不去。現在你又要賣馬,一千多里路你怎麼回去?我有點積蓄,可以幫你一點忙,」常生推辭說:「感謝你對我的真情,無論怎樣我也無法報答你。如再貪心花費你的錢財,我還怎麼做人呢?」女郎堅決要給他,說:「就算是暫時借給你吧!」接著拉著常生的胳膊,來到一株桑樹下,指著一塊石頭說:「搬了它。」常生就把石頭搬了。女郎拔下頭上的簪子,在土上刺了幾十下,又說:「把土扒開。」常生照做了,已經能看見甕口了。女郎把手伸進甕裡,取出將近五十兩銀子。常生拉住她的胳膊制止,她不聽,又拿出十幾錠銀。常生強迫著放回去一半,把甕掩埋好了。一天夜裡,女郎告訴常生說:「近幾天有些流言,看情景我們不能長聚了。這事我們不能不先商量一下。」常生吃驚地說:「這可怎麼辦?我一向小心謹慎。如今為了你的緣故,就像寡婦喪失了平日的操守,不能也作不了自己的主。我一切聽你的,刀鋸斧鋮也顧不得了!」女郎出主意說一塊逃走,叫常生先回家,約定到洛陽相會。常生收拾行裝回家,準備回家後再來迎她。他剛到家門口,女郎的車子也到了,於是一同進門拜見家人。街坊四鄰都驚奇地來祝賀,並不知道他們是偷著逃出來的。常生暗暗擔心,女郎卻很坦然,告訴常生說:「不要說在千里之外尋訪不到,就是知道了,我是世代顯貴人家的女兒,家裡也不敢把我怎樣!」
常生的弟弟常大器,這年十七歲。女郎看到他,對常生說:「弟弟本質聰明,前途比你強多了。」大器已定下了完婚的日期,未婚妻忽然死了。女郎說:「我妹妹玉版,你曾經偷偷地見過,相貌很不錯,跟弟弟年齡相仿,結為夫婦可稱是天生的一對。」常生一聽就笑了,用開玩笑的口氣請她說媒。女郎說:「如一定要娶她,並不很難。」常生高興地說:「有什麼辦法?」女郎說:「妹子同我最要好。只要兩匹馬駕一輛輕車,派個老婆子跑個來回就行了。」常生害怕他們自己過去的事會暴露,不敢聽從她的主意。女郎一再說:「沒有妨礙。」就讓駕車,打發桑姥姥去接。幾天後,來到曹州,快到門口時,桑姥姥下了車,叫車伕在路上等著,自己乘黑夜進了院子。過了很久,才同一個女子一塊出來,上車就往回走。夜裡就睡在車裡,五更天再走。女郎計算她們歸來的日子,叫大器身穿盛裝去迎接。大約迎出五十里,才相遇。大器上車同她們一塊回到家中,鼓樂齊奏,洞房花燭,拜堂成親。從此兄弟倆都娶了個漂亮媳婦,家境也一天天富裕起來。
一天,幾十個騎馬的強盜突然闖進常生的家。常大用知道有了變故,帶領全家登上樓頂。強盜進來,把樓圍住。常大用俯下身子問:「我們可有仇?」回答說:「沒仇!但有兩件事相求:一是聽說兩位夫人的美貌是世上沒有的,請讓我們見一見;再有一件是我們五十八個人,每人向你們討五百兩銀子。」說完,強盜們把柴草堆在樓下,擺出放火燒樓的架勢來威脅。常大用只答應了給他們每人五百兩銀子,強盜不滿意,要放火燒樓,家人嚇得要命。女郎要同玉版下樓,常大用勸說她們,不聽。二人穿著華麗的衣服下了樓,站在離地面只差三層的台階上,對強盜說:「我姐妹都是仙女,暫時來到塵世間,還怕什麼強盜!我就是賜給你們萬兩黃金,恐怕你們也不敢接受!」強盜們一齊仰拜,連聲說:「不敢。」姐妹二人正想回樓上,一個強盜說:「這是欺騙我們!」女郎聽了,返回身站住說:「你想幹什麼?趁早說出來,還不算晚!」強盜們你看我,我看你,沒有一個說話的。姐妹倆從容地上樓去了。強盜們抬頭看不見她倆了才一哄而散。
兩年以後,姐妹倆各生了個兒子,這才自己透露說:「我家姓魏,母親被封為曹國夫人。」常大用懷疑曹州沒有姓魏的官宦家。而且如果是大戶人家丟失了女兒,怎麼能耽擱到現在也不聞不問呢?不敢追根問底,心裡卻很奇怪,就借口有事又去了曹州。進曹州境內察訪,官宦世族根本沒有姓魏的。於是,常大用仍舊借住在舊主人家。忽然看見牆壁上有贈曹國夫人的詩,他感到很奇怪,就向主人打聽。主人笑了,請他去看看曹國夫人。到那兒一看,卻是一棵牡丹,和房簷一樣高。常大用問主人花名的由來,主人說這棵牡丹在曹州名列第一,所以同人開玩笑,封它為曹國夫人。常大用問它屬什麼品種,主人說:「葛巾紫。」常大用心中更驚奇,懷疑女郎是花妖。
回到家後,不敢質問,只是述說那首贈曹國夫人的詩,觀察女郎的表情。女郎聽了立刻皺起眉頭,變了臉色,猛然走出房門,呼喊玉版把兒子抱來,對常大用說:「三年前,我感激你對我的思念,才嫁給你報答你!如今你既然猜疑我,怎麼能夠再在一起生活!」就和玉版舉起孩子遠遠地拋出去,孩子落在地上一下子不見了。常大用吃驚地看著,兩個女子也忽然不見了。常大用悔恨不已。
幾天後,孩子落地的地方長出兩棵牡丹,一夜間就長到一尺多高。當年就開了花,一棵紫的,一棵白的,花朵大得像盤子,比平常的葛巾、玉版花瓣更加繁茂細碎。幾年後,枝繁葉茂,各長成一大片花叢。把花移栽到別的地方,又變成了別的品種,誰也叫不出名字。從此牡丹的繁榮茂盛,洛陽可算是天下無雙了。