平原縣的喬生,有個女兒長得又黑又醜:豁鼻子,還瘸著一條腿,二十五六歲了,也沒有來提親的。同縣有個穆生,四十多歲,妻子死了,家裡很窮,無錢再娶,就出了一份微薄的彩禮,娶了喬女。三年後,生了一個兒子。不久,穆生死了。喬女家裡更窮了,生活十分困難,就去乞求母親接濟。母親很不耐煩,喬女生氣,再不去娘家,只靠紡織維持生活。
有一個孟生,死了妻子,撇下個兒子叫烏頭,剛滿週歲,沒人撫養,所以孟生急著再娶一房媳婦;可是媒人一連提了好幾個,孟生都不中意。一天孟生偶然看見喬女,十分喜歡她,就找人暗中傳信給喬女,願意娶她。喬女推辭說:「我現在如此忍凍挨餓,嫁給官人可以得到溫飽,怎能不願意呢?但是我又瘸又醜,和別人不一樣。我所能自信的是品德。再嫁第二個丈夫,官人圖我什麼呢?」孟生敬佩她是一位賢良女子,對她更加愛慕。便叫媒人帶上封好的錢去找喬女的母親商量。喬母很高興,親自到女兒家裡,執意要女兒改嫁孟生。喬女堅決不答應。喬母很慚愧,向孟生表示,願意把小女兒嫁給他。孟生的家人都很喜歡,孟生卻不願意。
過了不久,孟生突然得急病死了。喬女前去祭奠,哭得很悲哀。孟生本沒有親戚,他一死,村裡的無賴都來欺負他家。家裡的東西被拿光了,又謀劃瓜分他的田產。家中的僕人也各自乘機偷了東西走了。只有一個老媽媽抱著孟生的兒子在靈堂帳幕中哭泣。喬女問明了原委,心中忿忿布平。聽說林生同孟家很要好,喬女就登門對林生說:「夫婦、朋友是人間大倫。我因為很醜,被人看不起,只有孟生能瞭解我。以前我雖然拒絕了他的求婚,可我的心卻早已許給他了。如今他死了,兒子又小,我當然應該報答知已。但是撫養孤兒容易,抵禦壞人的欺侮就難了。如果因為孟生沒有父母兄弟,就坐視他的兒子餓死,家產被搶光也不相救,那麼五倫之中就可以不要朋友這一倫了!我所期待你的並不多,只要你寫張狀子告到縣官那裡。孤兒我來撫養。」林生說:「可以。」喬女便告辭回家。
林生按喬女的囑托,準備寫狀子。那些無賴火了,要和林生動刀子。林生非常害怕,關上大門不敢出來了。喬女等了幾天,不見動靜,連忙去問,孟家的田產已經被分光了。喬女氣極了,挺身而出,親自去找縣官告狀。縣官問喬女是孟生的什麼人,喬女說:「你是一縣之主,斷案憑的是理。如果我告的不是真情,就是他的親戚也逃脫不了罪過;如果是真的,就是過路人說了也可以聽。」縣官氣她說話難聽,訓斥了一通把她趕出去了。喬女的冤屈無法伸述,就到一個鄉紳家裡哭訴。那鄉紳聽了,覺得喬女很義氣,就替她到縣官那裡剖明是非。縣官查明實情後,懲治了那些無賴,將孟家被搶走的東西又全要了回來。
有人提議,想留喬女住在孟家,就便撫養他的孤兒。喬女不肯,把孟家的房門鎖起來,讓老媽媽抱著烏頭跟她一塊回去,住在自家另一間屋裡。凡是烏頭的日常所需,喬女都是和老媽媽一塊去孟家打開房門拿出糧食,替烏頭置辦,自己從不沾孟家一點光,依然抱著兒子過窮日子,和從前一樣。
過了幾年,烏頭慢慢長大了。喬女給他請了老師,教他讀書;自己的兒子則叫他學著幹活。老媽媽勸她讓兒子和烏頭一塊讀書,喬女說:「烏頭的費用是他自已的。我如耗費人家的錢教自己的孩子,我的心意怎麼能說明呢?」又過了幾年,喬女為烏頭積攢了幾百石糧食,給他娶了大戶人家的女兒為妻。又整修了房屋,讓烏頭回自己家裡生活。烏頭哭著再三要求她一同去自己家住,喬女才依從了。但仍然自己紡線織布度日。烏頭夫婦奪去紡織的工具,喬女說:「我們母子倆光吃不幹活,怎麼能安心呢?」就早起晚睡給烏頭管理家務。讓他的兒子去巡查莊稼,如同一個傭人。烏頭夫妻有點小過錯,喬女總是訓斥責備,從不寬容。稍有不改,喬女就生氣地要回去。直到夫妻倆跪下認錯,悔過了,才罷休。不久,烏頭考中了秀才。喬女又要告辭回家,烏頭不答應,出錢為喬女的兒子娶了媳婦。喬女就把兒子分出去回家過。烏頭留不住他,就暗地讓人從附近村子裡買了一百畝好地,送喬女的兒子走了。
後來,喬女得了病,要回去,烏頭仍然不答應。看看病情越來越重,喬女囑咐烏頭說:「一定要把我葬在穆家!」烏頭答應了。喬女死了以後,烏頭用金錢買通了穆生的兒子,讓她母親同自己的父親孟生葬在一起。到了下葬那天,只覺棺材特別沉,三十個人也抬不動。穆生的兒子忽然倒在地上,七竅流血,自己說:「不孝的兒子怎麼能賣掉自己的母親!」烏頭害怕了,連忙跪下磕頭禱告,喬女的兒子才好了。靈柩又停了幾天,等把穆生的墳墓修好,烏頭才把喬女同穆生合葬了。