晉文公曾經向衛成公承諾,恢復他的國君之位。踐土之盟時,衛卿元咺事奉衛成公的弟弟夷叔表示對晉國的臣服,衛成公則途經陳國,準備返回衛國都城楚丘。有人在衛成公面前搬弄是非說:“元咺扶立了您的弟弟夷叔為國君了。”元咺的兒子元角一直隨侍在衛成公的身邊,衛成公就把他給殺害了。元咺得知兒子被害的消息,心中悲痛,但對自己的使命不敢有絲毫的懈怠,還是和夷叔一起回到了楚丘。六月,晉文公兌現承諾,恢復了衛成公的國君之位。
衛卿寧武子與衛國官員、士族在衛國的宛濮城盟誓:“上天降禍衛國,君臣不和諧,因此衛國才遭到了這樣的憂患。現在上天保佑衛國,使大家放棄成見而互相聽從。沒有留下的人,誰來守衛國家?沒有跟隨君王的人,誰去守護君王和他的財產?由于留下來的人和跟隨君王出行的人可能產生的不和諧,因此在神靈面前起誓:從今往后,跟隨君王在外的人不要仗恃自己的辛勞,留下的人不要害怕有罪。誰要是違背盟約,災禍就會降臨在他的頭上。神靈和先君在上,懲罰和誅殺違背盟約的人。”衛國人聽到這個盟誓后,上下齊心,沒有人敢心懷不軌。
衛成公還是不放心,擔心進入都城后會有不測,因此比約定的時間提前進入了都城楚丘,寧武子看到衛侯提前回到國都,恐生事變,他跑到城外,走在衛侯的前面,想先作宣喻,安定國人。衛大夫長牂把守城門,把寧武子當作衛成公的使者,和寧武子同乘一輛車進入了都城。衛成公的兩名親信公子歂(chuán)犬、華仲走在衛成公的前面作為前驅。衛成公的攝政弟弟夷叔正要洗頭,聽說國君兄長到了,特別高興,握著頭發跑出宮來迎接,公子歂犬和華仲張弓搭箭,射死了夷叔。衛成公知道自己的親弟弟其實并沒有任何罪過,在自己逃亡在外的時候,攝政守國,并沒有貪戀國君之位,看到弟弟就死在自己的面前,悲從心中來,把頭枕在弟弟的腿上大哭。公子歂犬飛奔往宮外逃去,衛成公命令衛士追上去殺死了他。大夫元咺一看情況不妙,自己趕快逃奔了晉國。
在城濮之戰中,晉軍的中軍在沼澤地里遇到了大風,丟掉了前軍左邊的大旗,掌旗官祁瞞違反了軍規,被晉國司馬誅殺,并通報諸侯,任命茅茷為新的中軍掌旗官。晉軍在返回晉國的途中,于六月十六日渡過黃河。戎車車右舟之僑無視軍紀,先行回國,由晉大夫范武子接替戎車車右之職。
七月,晉國軍隊精神抖擻,演奏著軍樂凱旋歸來,在宗廟獻俘、獻祭被殺敵人的左耳,并在宗廟里行飲至之禮,犒賞有功之人。晉侯在宗廟里宣布將再次征召諸侯會盟,討伐背叛的國家;同時詔命誅殺無視軍紀的舟之僑,通報全國,國君如此賞罰分明,處死了顛頡、祁瞞和舟之僑,晉國百姓心服口服。
魯僖公二十八年冬天,接到霸主晉文公會盟征召的諸侯陸續到達溫城,除了晉侯外,還有魯僖公、齊昭公、宋成公、蔡莊公、鄭文公、陳共公、莒茲丕公、邾文公和秦國特使。這次會盟的目的是商議如何討伐不順服的諸侯。另外,衛大夫元咺因為夷叔被害,逃奔晉國,向霸主晉侯控訴衛成公歸國之時殺害夷叔,求晉侯公道處置。其實,這次溫城會盟,晉侯是要解決三個諸侯國的問題:許國、衛國和曹國。
當年歸附楚國的諸侯中,有鄭、衛、陳、蔡、許五個較大的諸侯,現在除了許國既沒有參加踐土之盟,又沒有來參加溫城之會,其它四個諸侯國的國君都參加了兩次會盟。晉文公因此在盟會上決定,諸侯組成聯軍討伐許國。
關于衛國大夫元咺提出的訴訟,晉侯請各諸侯國君一起論個公道。衛國大夫寧武子作為衛侯的訴訟人;因衛成公本人沒有前來,衛大夫鍼莊子作為衛侯的代理人參加;衛國掌管審判的朝官士榮作為衛侯的答辯人。元咺講述了衛成公返回都城當天,攝政夷叔被害的經過,各諸侯國君經過商議,衛成公敗訴。晉國作為諸侯領袖,周天子已賦予了生殺諸侯及其大夫的特權,晉文公命誅殺衛侯答辯人士榮、對衛侯代理人鍼莊子處以刖刑(砍腳)。衛大夫寧武子因忠誠而獲赦免,詔命擒拿衛成公,押至京師、關進牢房,由寧武子負責衛侯的衣食。衛大夫元咺返回了衛國,立衛成公的另一個弟弟公子瑕為國君。
關于如何處置曹國的問題,晉文公有些猶豫不決。晉侯患病,晉國負責占卜的筮史拿了曹國的賄賂,找機會對晉侯說:“國君您的疾病來自于滅掉曹國。齊桓公主持會盟而封異姓之國,國君您現在主持會盟而滅同姓之國。曹國始封國君姬振鐸,是周文王之子;晉國始封國君唐叔,是周武王之子,都是姬姓。國君您會合諸侯而滅掉同姓之國,這是不合禮儀的。曹國和衛國都得到過國君您為他們復國的諾言,現在對衛侯履行了諾言,卻不履行對曹國的諾言,這是不守信用。禮儀用來推行道義,信用用來保持禮儀,刑律用來糾正邪惡。國君您覺得應該怎么辦呢?”
晉文公聽后,覺得很有道理,詔命恢復了曹伯的國君之位,曹共公復位做的第一件事,就是率領曹國的軍隊,參加了晉國領導的諸侯聯軍,討伐許國。
魯僖公二十八年十月,諸侯聯軍包圍了許國。魯僖公也率領魯國軍隊參與了此次征討。
在諸侯聯軍討伐許國之前,晉文公想率領參加溫城會盟的諸侯國君覲見周天子,為討伐許國造勢。然而,諸侯聯軍已集結,溫城與京師洛邑之間距離也不近,如果只是諸侯國君前往洛邑,則各國聯軍主帥失位,于軍不利;如果大軍一起前往京師,則有反叛之嫌。思來想去,晉侯派使臣前往京師洛邑,奏請周襄王出狩河陽,河陽位于溫城與京師之間,天子前往河陽巡狩打獵,順便接見一下諸侯,也算順理成章,周襄王允準,很給晉文公面子,各位諸侯國君也都在河陽覲見了周天子。孔子評價此事時說:“以臣下召請天子,不能以此為榜樣。(以臣召君,不可以訓。)”
晉文公為了加強霸主地位,以防御戎狄為由,將原有的步兵由兩行(軍)擴展到了三行(軍),至此,晉國就擁有了六軍,包括上、中、下三軍和左、中、右三行,是當時諸侯國中軍隊最多的國家。
討伐許國的戰爭一直進行了三個多月,魯僖公在次年春天才回到魯國。在魯國沒呆幾個月,又在六月前往了成周的翟泉與周朝太宰王子虎、晉國上卿狐偃、宋國司馬公孫固、齊國執政國歸父、陳國大夫轅濤涂、秦國公子慭盟會,重溫踐土之盟,并商議討伐鄭國事宜,因為鄭國又在私下與楚國密切往來。這次盟會,只有魯僖公是國君參會,其它諸侯都派出了公卿和大夫參會。按照周禮,諸侯之卿不應該會見公爵或侯爵諸侯國君,魯僖公是侯爵國君,各國國君不親自前來,只派出公卿,是對魯侯的不敬。魯僖公倒是沒說什么,對親信隨從說:“從去年十月以來,溫城之會后就是討伐許國,寡人也是春天回到魯國,夏天就又出來會盟了。各諸侯國君是過于勞累了,又忙于處理國內事務,晉侯良臣良將如云,也不能親自前來呢。寡人之魯國賢能之臣眾多,公子遂、文仲和三桓能夠為寡人分憂,處理國事。這是魯國強盛、社稷穩定之相啊!”