晋献公的儿子、逃亡在外的公子夷吾回国做了国君,就是晋惠公。晋惠公时期和秦国的关系非常不好。一来惠公赖掉了原本许诺给秦国的河西之地,二来在秦国有难遭遇饥馑的时候惠公不肯用粮食帮秦国渡过难关。于是秦晋之间发生了韩原之战,在这次战役中晋惠公被秦军俘虏了。
秦穆公的夫人是晋献公的女儿,也就是晋惠公的姊妹。听到晋惠公被俘虏了,穆姬命令在城外用柴草堆起高台,然后带着自己的儿子、秦国太子罃、公子弘以及女儿简璧登止高台,再命人给自己的丈夫秦穆公送去丧服,说只要晋惠公入城,她就会和自己的儿女一起死。也不知道是受到夫人的逼迫还是别的什么原因,反正最后经过慎重考虑,秦穆公还是放回了晋惠公,以惠公之子圉为质,并接管了晋之河东五城。
《左传》上说被立为太子的圉到秦国为质,秦穆公就把河东五城还给了晋国。后来太子圉又逃亡回了晋国。晋惠公死后太子圉继位,就是晋怀公。晋怀公这个侄子一继位立刻就号召不许晋国人跟随还在外逃亡的叔父重耳,限期回国。如果到了期限还回来,就要严惩。这时晋怀公抓了重耳的外祖父狐突为典型。一来狐突和重耳关系亲近,二来狐突的两个儿子狐毛和狐偃都跟随重耳。晋怀公原本想让狐突把自己的儿子叫回来,不要跟随重耳,好做个榜样给大家看。但是他采取的是威胁的方式,狐突没答应,于是被怀公杀了。
公子重耳在外逃亡流离展转也换了不少地方。在狄国十二年,娶了赤狄之女季隗。季隗的姐姐叔隗则嫁给了跟随重耳的赵衰,即赵宣子,赵氏孤儿赵武的祖父。当重耳要去齐国的时候让季隗等他二十五年再嫁人。说实话,感觉重耳说这个话就是根本不想让季隗嫁人,但又不好做硬性要求。季隗一算,再过二十五年自己五十岁了,还嫁什么人,于是答应一直等重耳。或者说,季隗本来就想等他。
重耳逃亡在外,待他无礼的有曹共工、郑文公这种人,也有待他不错的比如齐桓公、宋襄公。齐桓公把宗室的女儿嫁给重耳,就是齐姜。当重耳贪图安逸想留在齐国时是齐姜狐偃把重耳灌醉了送出齐国。重耳酒醒了气得拿着戈追打他的舅舅狐偃。
宋襄公对重耳也不错,送了重耳八十匹马。然后重耳又流亡到楚国。楚成王表面上对待重耳倒是挺礼遇的,但是要求重耳做了国君以后回报他。于是就有了“退避三舍”这个成语。最后重耳逃到了秦国,秦穆公收留了他,待他还不错,又送了五个女子给重耳。这五个人里有一个就是晋怀公圉在秦国时所娶的那个女子,现在秦穆公又把她嫁给了晋文公,就是文嬴。
秦穆公派军队护送晋文公回晋国。渡过黄河之后狐偃和秦国大夫、还有晋怀公的大夫在郇地会盟,其实就是达成了共识。郇在运城临猗西南。晋怀公的军队等于已经被重耳掌握了,重耳率军进入曲沃去祭拜了先祖曲沃武公的庙。这次祭拜的意义在于,每个晋侯在即位时都会去祭拜曲沃武公的庙。晋怀公被杀死在高梁,即现在的临汾。另外《史记》、《左传》里都没说介之推的死,是说他与自己的母亲隐居直到死。晋文公因为找不到他,就把绵上作为给他的祭田而纪念他。绵上即现在的山西介休东南。
《左传》里说“介之推不言禄,禄亦弗及。”介之推的想法认为,晋献公的九个儿子最后活着的只有重耳,所以上天一定会让重耳来继承君位,这是上天的意思,凡人如果觉得自己辅佐重耳有功,那就是贪天之功是不能这样的。虽然介之推的言论似乎有点一厢情愿,但至少说明他不会因为没有受到晋文公赏赐就生气。所谓的晋文公赏赐的时候忘掉了介之掉,介之推生气躲起来,晋文公找到山里用火攻想把介之推逼出来,介之推死活就是不出来最后被烧死,所以有了寒食节……实在是经不起推理的故事。
晋文公的父亲晋献公也不是只知道宠信骊姬,只知道屠戮公室。晋献公时期用假途灭虢之计把西虢国和虞国给灭了。除了西虢和虞国,还有霍国、耿国、魏国(西周封国,在山西芮城)、杨国。晋献公也少和戎狄打,骊戎、赤狄都受到晋国打击。晋献公时期虽然齐桓公称赞,但是晋国也奠定了日后称霸的基础。
这时候周王室发生了内乱。周惠王的继承者是周襄王姬郑。但是惠王后却宠爱周襄王的弟弟王子带。惠后本来想立王子带为太子,但是惠后很快死了没实现。周襄王娶了一个狄女隗氏,王子带和隗氏私通。周襄王把隗氏废了,王子带把隗氏带走和她一起住在温地。大臣颓叔和桃子怕狄人因为隗氏被废而怨恨,也不知道是怎么想的就拥戴王子带率领狄人的军队一起攻打周襄王。周襄王逃到了郑国的氾地。
秦穆公准备率军护送周襄王把他送回去,这时候已经驻扎在黄河边。同时在晋国狐偃也看出来这是个好机会,于是给晋文公出主意“求诸侯,莫如勤王”。称霸于诸侯不如出兵勤王。勤王能在诸侯中树立威望,能得到诸侯的信任,还合乎大义。
晋文公觉得狐偃说得有道理,于是“晋侯辞秦师而下”。晋文公没让秦穆公去,自己去了。周襄王回了王城抓住王子带杀了,晋文公算是有大功。立了大功的晋文公在朝见周王的时候提出了一个要求“请隧”。
隧,指隧道。将棺椁运到墓室所通过的道路。隧道是全地下,这是天子的葬制。诸侯只能用羡道,就是祼露在外的露天坡道通向墓室。晋文公希望自己死后下葬时也能用天子的葬制,通过隧道把自己的棺椁运向墓室。不过周襄王并没有因为他立了大功就答应他这个非礼的请求。周襄王把南阳一带的阳樊诸邑赐给了晋文公,从这时起晋国开始开辟南阳。