驪姬之亂,晉獻公的長子申生被害,公子重耳奔蒲。公子夷吾奔屈,後逃到梁國避難。
晉惠公在梁國時,梁伯為其娶妻。妻子懷孕,已經過了預產期,胎兒尚未出生。惠公心中焦急,請卜者(算命先生)招父父子占卜。招父的兒子掐指一算:「公子將有一男一女。」招父點頭,說:「是的。不過,男的日後為他人勞役(當人質);女的將為他人之妾。」因此,男孩取名叫圉,女孩取名叫妾。
魯僖公十五年(公元前645年),秦晉兩國在韓原開戰,惠公戰敗,晉惠公當了秦國的俘虜。多虧晉惠公的姐姐是秦穆公夫人穆姬,她身穿喪服哭泣不止,不停勸諫。秦穆公就和晉侯在王城結盟,並允許他返回晉國。不得已,魯僖公十七年(公元前643年)的夏天,將兒子圉送到秦國為人質。當時,圉的年紀大約十一二歲。 秦穆公將公族之女嫁給圉,此女名叫懷嬴。嬴為秦國公族之姓,懷從圉後來的謚號。
梁伯喜好大興土木、修筑城池溝塹,百姓疲憊不堪怨聲載道,多次互相驚嚇道「秦軍來了」,百姓過分恐懼。前641年,秦國滅亡了梁國。
圉在秦國做人質5年,前638年,晉惠公生病了。太子圉說:「我母親家在梁國,今天梁被秦國滅亡,我在國外被秦輕視,在國內又無援助。我的父親病重臥床不起,我擔心晉國大夫看不起我,請改立其他公子為太子。」於是太子圉與妻子懷嬴商量一起逃回去。懷嬴說:「您是一國的太子,在此受辱。秦國讓我服侍您,為的是穩住您的心。您逃跑吧,我不拖累你,也不敢聲張出去。」太子圉就一個人跑回晉國。
魯僖公二十三年(公元前637年)九月,晉惠公夷吾病死,他的兒子圉於都城絳即位,是為晉懷公。
與此同時,公子重耳經過長期流亡,也為秦穆公招納而至。志在春秋霸主的秦穆公,曾經說過」來等待有才能的人「治理晉國,他不相信晉惠公和兒子晉懷公的治國能力。他意在幫助重耳回國奪權,以此建立秦晉同盟關係。
懷公畏懼重耳回國奪權。懷公即位後,命令臣民不准跟隨逃亡在外的人。並規定了期限,不回來的不赦免。狐突的兒子狐毛和狐偃都跟隨重耳在秦國,狐突不肯召他們回國。懷公抓住狐突,說:「兒子回來就赦免。」狐突回答說:「當兒子能夠做官,父親教他懂得忠誠的道理,這是古代的制度。名字寫在簡策上,給主子送了進見的禮物,如果三心二意就是罪過。現在下臣的兒子,名字在重耳那裡已經有年頭了,如果又召他回來,這是教他三心二意。父親教兒子三心二意,用什麼來事奉國君?刑罰的不濫用,這是君主的賢明,下臣的願望。濫用刑罰以圖快意,誰能沒有罪?下臣知道您的意思了。」
狐突已經看出懷公的地位岌岌可危,說了一番大道理。懷公年輕氣盛,一怒之下殺了狐突。 狐突之死,將晉國公卿徹底推向了重耳一方。卜偃稱疾不出,認為懷公不賢明,反而殺人為快。
之前,晉侯返回晉國後,殺了慶鄭,重新修整政務。與大臣們商議說:「重耳在外,諸侯大多認為他有利而接待他。」晉惠公想派人到狄殺死重耳。重耳聽到風聲,跑到齊國去了。
魯僖公二十四年(公元前636年)正月,重耳在秦兵三千人的護送下,回到闊別二十年的晉國,懷公的心腹呂省和郤芮都臨陣倒戈,懷公被迫逃到高梁。重耳入國都絳,即位。懷公很快被即位為文公的重耳派人殺死。死時只有十八、九歲。