竇娥長大後嫁作蔡家媳婦,不到兩年,丈夫就死了。竇娥守寡在家,與婆婆蔡寡婦同住。
這時候,楚州有個流氓叫張驢兒,與父親張老頭一起欺負蔡家婆媳,要蔡寡婦嫁給張老頭,蔡寡婦為保命勉強答應了。張驢兒又逼著竇娥嫁給他,竇娥堅決不肯。一天,蔡寡婦生病,竇娥做湯給婆婆喝。張驢兒在湯裡放了毒,想先毒死蔡寡婦,然後逼竇娥成親。誰知蔡寡婦忽然嘔吐,不想喝湯,張老頭奪過碗,喝完了,不一會兒就毒性發作,倒地身亡。
張驢兒毒死了自己的父親,卻說是竇娥做的,告到政府。楚州知府是個壞官,接受了張驢兒的賄賂,就用酷刑逼竇娥。竇娥打死也不肯招,知府改打蔡寡婦。竇娥心疼婆婆,承認自己殺人。
竇娥被判定了死罪,押往刑場。
這時候,竇娥向天許願:如果她是冤枉的,要刀過人頭時,一滴血都不往下灑,全飛白布上,不讓鮮血沾到骯髒的地面上;第二,六月天要降三尺白雪,遮住她的屍體;以證明她是冤死的。
劊子手的刀砍下來,竇娥的血真的全飛到白布上;接著,六月的楚州天降大雪,遮住她的屍體。
竇娥的父親竇天章做了很大的官。竇天章奉旨去到楚州,當夜,他在燈下翻竇娥的案件,忽然見燈影一閃,竇娥的靈魂出現,求父親主持公道。
竇天章細審此案,為竇娥平反,宣布竇娥無罪,將張驢兒判死罪,從此,六月變回夏天,不再下雪。