晋国,姬姓, 是周初分封的古国之一,都唐(今山西翼城)。春秋初期,分裂内乱,后为曲沃武公所统一。晋武公在位二年即卒,其子晋献公继位。晋献公迁都绛(今山西翼城东南),并继续吞并周围的霍、魏、耿等十几个小国,才有今山西南部,并继续向河西、河南地进攻,成为北方一新兴强国。晋献公为高度集权,尽杀群公子,又宠信骊姬,废嫡立庶,酿成内乱,公子重耳被迫流亡在外,先后到过狄(在狄处住了十二年)、卫、齐、鲁、宋、郑、楚、秦等国,均受到礼遇。公元前637年(楚成王三十五年)至楚时,楚成王待以诸侯之礼,重耳十分感动。楚成王问何以报答,重耳回答说:“若以君之灵,得返晋国,晋、楚治兵,遇于中原,其辟居三舍。若不获命,其左执鞭,右属 (盛箭之器),以与君周旋。”(《左传·僖公二十三年》。)重耳居楚数月,应秦之召入秦。第二年,在秦穆公的帮助下,回国立为国君,是为晋文公,是年六十二岁。
晋文公在外十九年,历尽艰辛,深察民情,了解晋国内外情势。随从流亡人员有狐偃、赵衰、贾佗等,都具有政治、军事才干。这就为晋文公治国图强,提供了有利条件。就在晋文公即位这一年,即公元前636年(楚成王三十六年),周襄王被其弟太叔带与狄人赶走,周襄王告难于晋、秦等国,晋文公立即抓住这一机会,出兵迎回周襄王,并处死太叔带。周襄王感激,赏地八邑,于是晋拓疆至南阳(太行山南、黄河北),晋文公获得“尊王攘夷”的政治资本。
晋国的崛起,一些中原国家又转而从晋,晋国影响迅速扩大。如原从楚已达三年的宋,“叛楚即晋”(《左传·僖公二十六年》。)秦本来有德于晋文公,公元前635年(楚成王三十七年),秦、晋两国联合伐(今河南淅川西,称下,楚之与国),直接挑起与楚的冲突。其时,齐、鲁发生争端,鲁先向晋乞师,继而又向楚乞师,以攻伐齐、宋。在中原国家心目中,楚、晋两强,都是自己依靠的对象。晋文公要称霸,楚成王要巩固自己的霸主地位,晋、楚之争,一触即发。
公元前634年(楚成王三十八年),楚成王派令尹子玉、司马子西领兵攻宋围缗(宋邑,今山东金乡东北),又出兵与鲁国军队联合攻齐,取谷(齐邑,今山东东阿),把齐桓公之子雍安置在此,以申公叔侯留戍。齐桓公七子皆奔楚,楚尽以为大夫。楚成王于是加强了对齐鲁之地的控制。公元前633年(楚成王三十九年),楚成王为了进一步加强对宋的进攻力量,又联合陈、蔡、郑、许诸国之军,共同出击,楚等各国还与鲁国国君“盟于宋”(《春秋·僖公二十七年》。)在此同时,楚成王又遣子文治兵于睽,子玉治兵于(《左传·僖公二十七年》。)宋已成为楚、晋争夺的焦点。
面对楚成王咄咄逼人之势,晋国君臣亦紧急商议,采取对策。据《左传·僖公二十七年》载,当宋向晋告急时,先轸认为:报施救患,取威完霸,在此一举。狐偃建议:先攻曹、卫(即不与楚正面交锋),楚军必来救援,宋、齐必然无事。晋文公于是阅兵于被庐,作三军,谋元帅,以[谷阝]谷将中军,[谷阝]溱佐之;以狐毛将上军,狐偃佐之(此从《左传·僖公二十七年》。《史记·晋世家》则说狐偃将上军,狐毛佐之。);以栾枝将下军,先轸佐之。次年,即公元前632年(楚成王四十年,晋文公五年),晋文公亲统大军攻伐曹、卫,取卫五鹿(今河南濮阳南),入曹,执曹共公,企图逼楚军撤宋围北上。这时,形势骤变,晋、齐两国国君盟于盂(卫地,今河南濮阳东南),卫国国君请求与晋结盟,晋不许,于是卫国国人驱逐其君而取悦于晋。鲁亦背楚附晋。晋又贿赂齐、秦,孤立楚国。
楚成王迫于上述不利形势,退居于申,命申公叔侯自谷撤军,命子玉解宋围。子玉不肯,请求出战,楚成王恼怒,“少与之师,唯西广、东宫与若敖之六卒实从之”(《左传·僖公二十八年》。《左传·宣公十二年》谓楚“其军之戎,分为二广”,故西广为二广之一。东宫,即太子之宫甲。六卒,杜注:一卒为百人,六卒则六百人。杨伯峻《春秋左传注》引江永《群经补义》,以一卒三十乘,六卒一百八十乘。)这样,子玉除原率围宋之军队外,楚成王又另增派了少量军队。子玉很老练,并不轻易撤宋围北上进攻,而是派大夫宛春对晋文公说:只要晋“复卫侯而封曹,臣亦释宋之围”。显然,这是子玉以楚之“三施”逼晋受“三怨”的策略,以达到“一言而定三国”的目的(《左传·僖公二十八年》。)但晋文公争霸决心已定,故采取了先轸的建议,一方面拘留宛春,另一方面又私许复曹、卫,使曹、卫与楚绝好。子玉的计谋落空了,大怒,即率军进攻晋军。
晋文公早就作了精心的部署,战斗开始后,“退三舍 (一舍三十里,三舍九十里)避之”,避开楚军锋芒,至于城濮(卫地,今山东鄄城西南),造成“君退、臣犯,曲在彼”之势,然后以胥臣所率下军击溃楚右师陈、蔡之军,原轸、[谷阝]溱领中军伏击楚之中军,狐毛、狐偃以上军夹攻楚之左军,左军溃。至此,楚军败,“晋师三日馆、谷”而还。子玉及时收兵,故其亲率的中军不败。子玉败归,楚成王逼迫其自杀(城濮之战,《左传·僖公二十八年》、《史记·晋世家》等均有详细记载。)城濮之战,是关系中原全局的战争,也是晋文公与楚成王争霸的一次决定性战役。战后,晋文公大会诸侯于践土(郑地,今河南原阳西南),周襄王策命晋文公为“侯伯”。楚成王功亏一篑,未获霸主美名。尽管如此,楚国战后实力仍强,楚成王实际上仍为大国强国之君。童书业说:“……(楚国)不特庄王为霸主,成王亦为霸主也。是时微晋人大挫楚锋,楚将有中原而或代周,春秋历史之形势必大变矣。”(童书业《春秋左传研究》。)楚国城濮之败,历来怪罪子玉,说子玉“刚而无礼”(左传·僖公二十七年》。)〗,不听楚成王劝止,骄傲轻敌(《左传·僖公二十八年》载,楚成王曾以《军志》语:“允当则归”、“知难而退”等劝阻子玉。又载,子玉临阵前曾说:“今日必无晋矣。”这些都是指责子玉骄傲轻敌的根据),终导致失败。子玉“一言而定三国”落空,对晋文公的作战决心始料不及,临战前对敌我双方形势认识不足,以致指挥失误,这点子玉是有责任的。但城濮败北,真正根子在楚成王本人。因为围宋抗晋立霸是楚成王亲自制定的方针,为实现这一方针,他令子玉伐宋围缗,并联合陈、蔡、郑等国围宋,又盟于宋,以协调对晋的斗争策略。接着又令子文、子玉分别治兵备战。子玉是始终坚定不移地执行这一方针策略的。但在形势变化时,楚成王从前线退下来,“入居于申”(楚方城内)。当子玉请战时,又调遣军队支援,这明明是自己退居后方,让子玉去前线指挥作战。可见楚成王的进攻部署是明确的,退却部署则是混乱的,这不能不是最高统帅的失误。子玉见左右师失利,所率中军立即收兵,保住了主力,亦不失为大将的明智。子玉死后,晋文公很高兴,说:“我击其外,楚诛其内,内外相应。”(《史记·晋世家》。)城濮之败、子玉之死,无疑是楚成王争霸道路上的严重挫折与损失。
践土之盟,晋文公霸业达到顶峰。会后,晋等国围许攻郑,以打击楚之与国。郑不久向晋请和。公元前628年(楚成王四十四年,晋文公九年),楚成王遣大夫斗章赴晋请和,晋文公亦遣大夫阳处父至楚回报,“晋、楚始通”(《左传·僖公三十二年》。)双方均取友好态度,标志着晋文公与楚成王争霸的结束。这一年,晋文公卒,子立,是为晋襄公。
公元前627年(楚成王四十五年),晋襄公以许附楚,派阳处父领军与郑、陈联合攻伐。楚令尹子上即率军北击晋之盟国陈、蔡。陈、蔡从楚,子上又攻郑,阳处父即侵蔡救郑。子上救蔡,与晋军夹[氵氐]水(今河南鲁山西南)而对峙。双方皆无意决战,晋军归,楚军亦归。楚成王子商臣谮子上受晋赂,楚成王杀子上。第二年,楚成王死,楚、晋形势都发生了新的变化。