唐代宗年间,博陵才子崔护晋京赶考,在长安郊外桃花庄路遇哑女周桃,一见倾心,便毛遂自荐为其治病。原来,周桃因幼年时父母被当权太监鱼朝恩所害,受惊致哑。她与爷爷周老爹避难于桃花庄。
丞相杨炎次女金瑶得了肺痨,医嘱令其心情开朗。
学士路昭因欣赏崔护人才,欲将妻妹金瑶许配给他,崔虽未允,但答应与金瑶作伴。
鱼朝恩与杨炎找回了皇上在安史之乱时失散民间多年的太后。
此时,周桃遇上一突然事件,不料说出话来。
右丞相卢杞与鱼、杨不和,查出太后为假,禀告皇上。皇上治鱼、杨二人之罪。为此,杨家一片惶然。崔护却义留杨府。后来,杨、鱼被赦,杨丞相为女求婚遭拒,要将崔护驱出京城。为此金瑶大惊,口吐鲜血,恳求父亲向崔护道歉。周桃力劝崔护与杨家结好,并与其订于来年三月三日想见。
金瑶病情加重,崔护跪请其义父鱼朝恩启遍请宫中太医为其治病。太医均言如能过春天即可痊愈。
崔护高中进士,金瑶欲设宴为其庆贺,崔护因欲赴周桃之约而婉拒。金瑶黯然神伤,吐血昏倒。崔护为照顾金瑶,不得不放弃三月三之约。
金瑶昏迷三天三夜,醒来后忙催崔护前往桃花庄赴约。谁知等崔护赶到周家时,周桃已不知所往。崔护失望之余,在柴扉留诗一首后,怅然离去。周桃给父母扫墓回来,见到崔诗,急往城中寻找崔护,恰遇金凤哀求崔护与金瑶成亲。为此,周桃心碎离去,日渐病危。崔护得知后赶往桃花庄,周桃已郁郁而终。与此同时,金瑶也离开了人世。
金瑶与周桃死后在阴间相遇,因金瑶魂魄有鱼朝恩所赠佛珠庇护,故二人商议以金瑶之魂借周桃之身重返阳间,帮助崔护飞黄腾达。“桃儿”复活后执意要崔护投身仕途,并与其来到杨府,被杨家认为义女。右丞相卢杞笼络崔护不成而治其罪,被“桃儿”巧语化解。崔护被皇上封为巡查使,奉旨与“桃儿”完婚。
崔护与“桃儿”新婚之夜,周桃之魂妒怨难当而来闹洞房,令金瑶真魂出现吓昏崔护。崔护偶然提及桃儿的杀父之仇,“桃儿”却正告崔护以后不要再提此事。
鱼朝恩暗害卢杞未遂,反被皇帝治罪,幸亏杨炎求情得免,“桃儿”劝杨炎远离鱼朝恩。鱼再次派人行刺卢,被周桃之魂相救。崔护欲查此事,却被“桃儿”阻止,崔护对其身份渐生怀疑。
杨炎欲在曲江池畔修建杨家宗祠,“桃儿”认为此地有王者之和,若修祠必将惹祸,杨却不听。皇上令崔护寻找太后,“桃儿”指桃花庄的沈婆婆是太后。崔护携“桃儿”出城,周老爹却被鱼朝恩手下捉去问周家底细,周说出往事后被杀。鱼朝恩也将办事人杀死灭了口。
杀害周老爹的凶手乃卢府总管之子,杨炎借此弹劾卢杞,皇上未允。鱼朝恩挑拔卢、杨的关系,与杨不欢而散。“桃儿”与崔护回京后,听说周老爹被害后而晕厥。她醒后约见鱼朝恩,请他全力辅助杨炎,否则取其性命。鱼朝恩怀疑“桃儿”并非彼时桃儿,可能是金瑶附身。
卢杞为杨炎修建宗祠之事反击成功。杨炎被贬往蛮荒之地。崔护被卢杞举为左朴射后,向皇上告假回乡探母,“桃儿”不同意。为此,崔护责怪她。崔护和“桃儿”不同意。为此,崔护责怪她。崔护和“桃儿”两人日渐疏远。而“桃儿”知己命已不长久,可有口难言,只得暗自伤心。
卢杞手下裴延庆派人截杀在贬官途中的杨炎。“桃儿”得知此事后,使魂出窍去救父亲杨炎,并劝其去找皇太后以求官复原职。“桃儿”因没了金瑶魂魄,立时断了气,令众人惊吓不已。杨、鱼二人前往桃花庄去见沈婆婆,百般恳求,方才求得她答应秘密进宫。
沈婆婆过惯乡间闲适生活,不愿再回血雨腥风的皇宫中。她临行前求皇上将杨炎官复原职,皇上应允。杨炎重返朝政后并未善罢干休,以截杀朝庭重臣为名欲置卢杞于死地。卢杞重贿鱼朝恩为其求情,被允告老还乡。杨炎得知后大怒,与鱼朝恩反目成仇。
鱼朝恩杀死杨炎,“桃儿”发誓要为父报仇。在一个风雨交加之夜,周桃与金瑶之魂同时出现在崔护面前,并告知崔护真相。原来“桃儿”已怀孕,但大限将临,二人必须去十八层地狱赎罪方可保住胎儿。“桃儿”与崔护历尽苦难,终成眷属。