由以上《左傳》的內容可以看出,趙氏即使遭到晉景公討伐,但沒有隱藏孤兒的事,趙武一直在母親莊姬的保護下住在景公的宮中,後來承繼趙氏的封邑。但在《史記》中趙武成了趙氏孤兒的主角,有一段十分複雜的情節:
晉景公三年(公元前597年),趙朔娶晉成公的女兒為夫人。趙朔為晉國統帥下軍援救鄭國,跟楚莊王在黃河邊交戰。
晉景公三年(公元前597年),大夫屠岸賈圖謀誅滅趙氏。當初,趙盾在世時,曾夢見叔帶(趙氏的祖先,公元前770年左右,由周地來到晉國,服侍晉文侯,開始在晉國建立趙氏世家)抱著他的腰哭泣,很悲哀;一會兒又大笑,一邊拍手一邊唱歌。趙盾占卜這個夢,龜甲上灼的裂紋中斷可是後麵又呈現佳兆。趙的史官援看了兆紋說:“這個夢很凶,不是應在您本人身上,而是應在您兒子身上,但也是由於您的過錯。到您的孫子,趙氏宗族將更加衰微。”
屠岸賈這個人,開頭得到靈公的寵愛,到景公時,屠岸賈就當了司寇,將要發難,就追究殺害靈公的罪犯,趙盾受牽連。他告訴三軍的將領說:“趙盾雖然不知情,還是罪魁禍首。作為臣子謀殺國君,子孫仍然在朝作官,這怎麼能懲治罪犯?必須誅滅趙氏。”韓厥說:“靈公被賊臣殺害,趙盾在都城外,我們已故的國君認為他無罪,所以不加懲治。現在諸位要殺他的後代,這不是先君的意思而是現在胡亂誅殺,胡亂誅殺就是作亂。臣下要辦大案件而國君不知道,這是眼中沒有君上。”屠岸賈不聽。韓厥告訴趙朔趕快逃走。趙朔不同意,說:“您一定不會讓趙氏的祭祀斷絕,我死而無憾了。”韓厥答應了這一請求,裝病不出家門。屠岸賈不請示景公,擅自跟三軍將領在後宮襲擊趙氏,殺死趙朔、趙同、趙括、趙嬰等,全部誅滅了趙氏家族。
趙朔的妻子是成公的女兒,懷有遺腹子,便跑到景公的宮中躲藏。趙朔有個門客叫公孫杵臼,杵臼對趙朔的朋友程嬰說:“您為什麼不去死?”程嬰說:“趙朔的夫人懷有遺腹子,如果有幸生個男孩,我撫養他;倘若是個女孩,我慢慢死吧。”過了不久,趙朔的夫人分娩,生了個男孩。屠岸賈聽到消息,就到宮中搜查。夫人把嬰兒藏在褲襠裏,禱告說:“趙氏宗族要滅絕的話,你就號叫;倘若不該絕後,你就不出聲。”到搜索的時候,嬰兒竟然沒有啼哭。逃脫搜捕之後,程嬰對公孫杵臼說:“現在一次沒有搜查到,以後一定還要再搜查,怎麼辦?”公孫杵臼說:“撫養孤兒成長與殉節相比哪個難?”程嬰回答說:“死容易,撫養孤兒成人難呀。”公孫杵臼說:“趙氏先君厚待您,您就盡力承擔起這件難事,我擔當容易的,讓我先死。”於是兩個人商量弄來別人的一個嬰兒背著,裹著華麗的繈褓,藏匿在深山中。程嬰走出山來,假意對那些將軍們說:“我程嬰沒有出息,不能撫養趙氏孤兒成長,誰能給我千金,我就告訴他趙氏孤兒藏身的地方。”將軍們都很高興,答應了他的條件,派兵士跟隨程嬰襲擊公孫杵臼。公孫杵臼假意罵道:“小人哪,程嬰!從前後宮事變,你不能殉節,跟我商量隱匿趙氏孤兒,如今又出賣我。縱然你不能撫養孤兒成人,卻忍心出賣他嗎?”手抱嬰兒喊道:“天啊!天啊!趙氏孤兒有什麼罪,請讓他活下去,隻殺我杵臼好了。”將軍們不答應,就殺了杵臼和孤兒。諸將認為趙氏孤兒確實已死,都很高興。然而,真正的趙氏孤兒倒反活著,程嬰跟嬰兒一起藏匿在山中。
過了十五年,晉景公生病,叫人占卜,說是大業(指皋陶,是趙氏和秦國嬴氏的共同祖先)的後代絕了祀的在作怪。景公問韓厥,韓厥知道趙氏孤兒活著,就回答說:“大業的後代在晉國斷絕祭祀的,不就是趙氏嗎?從中衍(趙氏的祖先,在世時間約公元前1557年左右,曾給殷帝大戊管理車馬)開始都姓嬴。中衍人麵鳥嘴,輔佐殷帝大戊,以後的幾代輔佐周天子,都有完美的德行,以後到周幽王、周厲王昏庸無道,因而叔帶離開周王室來到晉國,侍奉先君文侯,其後裔都替晉國服務,直到成公,世世代代都立有功勳,不曾斷絕祭祀。現在惟獨您滅絕趙氏宗族,國內百姓都哀傷他們,所以顯現在龜甲和蓍草上。希望您考慮這件事。”景公問道:“趙氏現在還有子孫後代嗎?”韓厥把全部情況如實告訴了景公。於是景公和韓厥商量立趙氏孤兒,把他召回來藏在宮中。將軍們進宮探問病情,景公利用韓厥擁有的兵力脅迫諸將會見趙氏孤兒。趙氏孤兒名叫武。將軍們迫不得已,就說:“當初後宮事變,是屠岸賈策劃的,他假傳國君的命令,指揮群臣。不是這樣,誰敢發難!如果不是您有病,群臣本來就要請求立趙氏後代。現在您有命令,正是我們大家的心願。”於是景公令趙武、程嬰一一拜謝諸將,諸將反過來跟程嬰、趙武進攻屠岸賈,滅了他的全族。景公又像過去對待趙氏那樣賜予趙武田邑。