晋景公三年,大夫屠岸贾密谋诛杀赵朔及赵氏家族,他以当初赵盾牵涉到的杀灵公事件为由,纠结党徒及一些将领,屠杀了赵氏满门三百余口人。
赵朔的妻子是景公的姑姑,当时还有身孕,利用这层身份,她逃到了景公的宫里躲了起来。
赵朔的门客公孙杵臼与程婴幸免于大屠杀,公孙杵臼对程婴说:你为什么没有跟随赵家去死呢。程婴说:赵朔的妻子有孕,如果生下男孩,我就养大他,如果是女孩,我就再去死。没过多久,赵朔的妻子分娩,生下了个男孩。屠岸贾听说马上到宫中搜查,赵朔的妻子把孩子放到宽大的裤子里,并祈祷说:如果天要灭亡赵氏一族,那孩子就哭吧,如果上天还想给赵家留一条血脉,孩子就一定不要出声啊。等屠岸贾搜查的时候,孩子竟然睡着了,没有一点声音出来。
脱险以后,程婴对公孙杵臼说:今天的搜查没有找到孩子,屠岸贾一定不会善罢甘休的,以后还会再来找,那时候怎么办呢?公孙杵臼说:死和把孩子养大并帮助赵氏恢复爵位,哪个更难呢?程婴回答:肯定是死更容易。赵氏的先君对您不薄,就请您去做难的事情,我来做简单的事情吧。公孙杵臼说。
最后二人找了个小婴儿,让公孙杵臼带到山里去,然后程婴跑去找屠岸贾假装告密:我实在承受不了重担,抚养不了赵氏孤儿了,您给我赏金,我带您去找孩子。于是带着屠岸贾到山里找出公孙杵臼和婴儿。公孙杵臼骂道:程婴,赵氏哪里对不起你,你这样背叛赵氏,连一点血脉都不给留么。然后跪着爬到屠岸贾脚下,请他放过小婴儿。屠岸贾不答应,处死了公孙杵臼和婴儿。屠岸贾一党以为赵氏彻底清除干净了,高兴的走了。而程婴则抱着真正的婴儿即赵武逃到深山中隐居起来。
过了十五年,一次晋景公生病,占卜说是因为有大功业于晋的人没有子孙祭祀。景公于是询问韩厥,韩厥知道赵氏孤儿还在,就把事情说给了景公。他们偷偷的把赵武和程婴接到王宫,景公召集群臣,把赵武叫出来让大家看,大臣们措手不及没有准备,都说:我们也想找赵氏的遗孤呢,只是没来得及,君王把他找到了,就恢复他的爵位吧。于是恢复了赵武的爵位,并派人杀了屠岸贾。
这时候赵武回家告诉程婴,程婴拔出宝剑要自刎,赵武连忙跪下:您冒着生命危险抚养了我十五年,如今我恢复了家族的爵位,就请您让我像儿子一样侍奉您吧,请千万不要自杀啊。程婴说:我当初之所以不死,就是要抚养你,如今你恢复了赵家爵位,我要是不死,赵氏祖先、公孙杵臼以为我还没有完成任务呢,我得去告诉他们。于是把剑一横,自刎而死。
赵武没能阻止成功,为程婴守孝三年,后来赵氏家族世世代代都祭祀程婴没断绝过