一切均已就緒,伍子胥的復仇計劃,似乎也只欠東風了。公元前506年,唐、蔡兩國突然派使求見。伍子胥大喜道:“唐、蔡世為楚國附庸,突然派使者前來,定是與楚國交惡,真是天助我也!”果然,唐成公有兩匹骕骦寶馬,蔡昭侯有一對羊脂白玉佩、兩件銀貂鼠裘,兩人各拿出一半獻與楚昭王,祝賀他得到“湛盧”寶劍。令尹囊瓦素性貪鄙,暗示兩人獻出另一半,不料遭到拒絕,遂以謀反為名,將二人軟禁起來,一扣就是三年,直到兩人忍痛拿出所有寶物,才把他們放了出來。兩人咽不下這口氣,先請北方霸主晉定公主持公道,晉命士鞅率領十八路諸侯伐楚,不料副將荀寅也向蔡昭侯索賄,遭拒后便解散了聯軍。令尹囊瓦聞知大怒,居然率軍包圍蔡城。蔡侯走投無路,遂攜唐侯向吳求救。
伍子胥以楚眾叛親離,諫議乘機伐楚。孫武以唐蔡可解決補給難題,也主張借機攻楚。兩位重臣不謀而合,吳王闔閭不再猶豫,遂命太子終累守國,而拜孫武為大將,伍子胥、伯嚭為副將,公子夫概為先鋒,親率六萬大軍,渡長江、溯淮河,悄然向蔡城挺進。令尹囊瓦聞知大驚,急忙撤掉蔡圍,入方城、涉漢水,至今襄陽市南,才稍稍定下神來,命人回郢都告急。孫武得知蔡圍已解,遂在淮汭(河南新蔡縣東南)舍舟登岸,與唐、蔡兩軍會合一處,又避開方城隘口,穿越桐柏諸山,自沘水(唐河)南下,直達漢水北岸(襄陽市東北),與楚軍隔江對峙。
楚昭王年方十余歲,聞報大驚失色,急命囊瓦固守漢南。公子申卻以吳軍千里奔襲,一無糧草,二無援兵,定然難以持久,只要守住漢江天險,便可確保無虞。又以左司馬沈尹戌老成持重,奏令其率精兵一萬五千人,自息邑(河南息縣西南)增援囊瓦。沈尹戌即南越大別山麓,西與令尹囊瓦會師,隨向他獻上一條妙計,即分兵五千助他堅守漢南,而自率萬人偷襲淮汭,放火燒掉吳船,斷絕吳軍歸路,然后回師漢北,與他南北夾擊,令吳人插翅難逃。令尹囊瓦大喜,起初倒也依計而行,誰知沈尹戌走后不久,便因貪功急進,搶先渡江求戰。誰知吳軍早有準備,先鋒夫概大破楚軍,伍子胥又偷劫楚寨。囊瓦狼狽逃至柏舉(襄陽市東北),打算逃回郢都,恰遇大將薳射率萬人前來增援,才就地安營扎寨。
這時,吳王闔閭因孤軍深入,暗有見好就收之意。伍子胥急以溺水者為勸,如果“一飲而止”,必將半途而廢,“不如乘之以沉之”,令其永世不得翻身。吳王闔閭又堅定決心,誓與楚國決一雌雄。可笑的是,令尹囊瓦居然信心爆棚,再次主動進攻吳軍。公子夫概和伍子胥再合力擊潰楚軍。令尹囊瓦見勢不妙,居然逃往鄭國去了。公子夫概繼續追擊薳射,乘其搶渡清發水(襄陽市北小清河),“半渡而擊”,斃傷楚軍大半。薳射轉身逃至雍澨(襄陽市西北)。公子夫概追斬薳射,又進圍其子薳延。千鈞一發之際,左司馬沈尹戌及時趕到,總算救了薳延一命。原來,沈尹戌途中得知囊瓦兵敗,知道偷襲已成泡影,于是立即率部還援,正好替薳延解了圍。沈尹戌知道大勢已去,決心拼死一戰,終因寡不敵眾,壯烈戰死沙場,只剩薳延等數人,狼狽逃回郢都報信。吳軍乘勝渡過漢水,直奔郢都殺去。
楚昭王聞報大驚,一邊大罵囊瓦混賬,一邊打算棄郢逃命。后因顧念城中百姓,令公子申、公子結為將,率城中丁壯登城死守。吳軍卻勢如破竹,前后五戰五勝,不到十天時間,便兵臨郢都城下。伍子胥親率吳師猛攻,迅即攻破郢都東門,吳軍如潮水般涌入城內。楚昭王匆忙從南門逃走,公子結率百官出城護駕,連家眷也顧不上帶走,公子申留下斷后。伍子胥再率部追擊。幸虧楚人有擅長馴象者,驅趕象群沖入吳陣,暫時嚇退吳軍,才勉強擺脫了追擊。
伍子胥怏怏而歸,轉而保著吳王闔閭,大搖大擺進入郢都。闔閭堂而皇之地坐在楚王寶座上,從容召見隨行吳臣,當晚又留宿楚王后宮,逼迫昭王嬪妃侍寢。吳將也紛紛霸占楚大夫家室,公子山與公子夫概為爭奪囊瓦夫人,甚至大打出手。唐公和蔡侯則直奔囊瓦家中,取回自家寶物,全部獻與闔閭。伍子胥還不解恨,又奏請搗毀楚國宗廟,夷滅城垣宮室,焚燒府庫糧草。繁華富庶的郢都城,就這樣被毀于一旦。相傳,伍子胥又掘開楚平王墳墓,鞭尸三百,方才解心頭之恨。不過,此事始見于《史記》,更早的《左傳》《國語》等典籍均不見載,它如《榖梁傳》《淮南子》等,也僅提到“鞭墓”或“鞭墳”,加之司馬遷“心有戚戚”,極可能因同情而有所夸張,故“掘墓鞭尸”不足為信。不過,司馬遷稱他“棄小義,雪大恥”,“名垂于后世”,非“烈丈夫”不能如此,卻被后世引為公論。
當時,闔閭君臣已近癲狂,唯有孫武比較清醒,知道吳國勢難將楚國吞并,奏請擁立公子勝為君,代吳王統治楚地。吳王闔閭哪里聽得進去,反聽任臣下恣意妄為。這時,楚國君臣已歷盡艱辛,自云夢澤輾轉逃至隨國(湖北隨州市)。伍子胥聽到傳聞,立即致信隨侯,以割讓漢東為條件,勸他交出楚王。隨人不愿得罪強鄰,矢口否認楚王在隨。伍子胥信以為真,從此置之不問。正如孫武所言,“兵貴勝而不貴久”,吳軍懸師遠出,卻滯留郢都城中,形勢漸為不利。楚人素有忠君愛國傳統,楚昭王又不似乃父,向以寬厚仁慈著稱,百姓感念其恩情,自發抵抗吳人侵略。公子申逃出郢都后,又權立王旗于脾泄(湖北棗陽市內),郢都遺民紛紛歸附旗下。在此前后,越王允常也趁吳城空虛,率軍騷擾吳國邊境,令吳陷入腹背受敵險境。
更要命的是,楚有大夫申包胥,在郢都城破后,與楚王走散了,只身逃入石鼻山(湖北宜昌市西北)中,聽說伍子胥瘋狂報復,立即寫信質問他,即便為父兄報仇,是否也太過分了?又勸他立即撤兵回國,否則將兌現“興楚”諾言。原來,申包胥為伍子胥密友,曾在伍子胥逃亡途中與他相遇,伍子胥向他哭訴了悲慘遭遇,并發誓要覆楚報仇。申包胥對他極為同情,答應放他逃走,但勸他不要復仇,否則“子能復之”,“我必能興之”,即伍子胥能滅楚,自己就能興楚。這時,伍子胥卻遣使回稱,自知已“日暮途遠”,所以不得不“倒行逆施”。申包胥決意復楚,但天下茫茫,不知如何著手。后來突然想到,太夫人嬴氏為秦女,與秦有姻親之好,于是單身赴秦求助。秦哀公不愿與吳為敵,婉言謝絕了。申包胥獨自留在秦庭,號哭了七天七夜。秦哀公為其感動,終命子蒲、子虎為將,帥師五百乘出武關,前往漢北救楚。楚昭王聞報大喜,即命公子申、公子結率殘部與秦軍會師稷地(河南唐河縣西南)。
吳王闔閭四面楚歌,哪敢馬虎大意,立即派先鋒夫概出擊。兩軍遭遇于沂水(河南唐河縣西南),秦軍如神兵天降,殺得夫概落荒而逃。副將伯噽請兵再戰,結果又慘敗于軍祥(湖北棗陽市西),幸由伍子胥救出。秦楚聯軍乘勢南進,兵鋒直指漢水南岸。吳王闔閭心慌意亂,急派使者聯絡唐、蔡。誰知聯軍又搶先一步,遣軍襲殺唐成公,就此滅掉唐國。蔡昭公大驚失色,從此閉門不出,吳師徹底被孤立。屋漏偏逢連陰雨,這時公子夫概居然乘國內空虛,擅自逃回吳境,隨后自立為王,命兒子扶臧據守淮河上游,以阻斷闔閭歸路,又遣使游說越君,聯兵入寇吳城。吳太子終累邊登城拒守,邊遣使飛報闔閭。
吳王闔閭嚇得肝膽俱裂,連忙率軍離郢回吳。吳公子山率部強渡漢水,不料先敗于雍澨(襄陽市北),再敗于麇地(襄陽市東北),被迫北走公壻之谿(河南泌陽縣東)。吳王闔閭率兵繼至。進退兩難之際,申包胥又送來書信:“眼見吳軍連戰連敗,再言滅楚已是侈談。寡君有好生之德,不妨就此講和休戰!”原來,秦軍只為救楚,不欲助楚滅吳,時已心生歸意,于是乘勝求和。伍子胥慨然嘆道:“罷了,罷了!試問天下臣子復仇,誰有子胥暢快淋漓?!兵法有云:見可而進,知難而退。不如見好就收,順坡下驢!”遂以楚迎回公子勝為條件,與楚達成和議。吳王闔閭立率吳師回吳,途中擊潰夫概叛軍,回吳后又擊退越王允常,總算是有驚無險。隨后論功行賞,以伍子胥為首功,將他封之申地,具體封地不詳,后世也稱他為申胥。其他如伯嚭等將,也各論功封賞。只有孫武生性淡泊,從此退隱不仕。吳國經此一役,元氣也有損傷,此后近十年間,不再輕啟兵釁。
楚昭王九死一生,終于又回到郢都。眼見城墻毀頹,街市荒蕪,宮室殘破,民生凋敝,不禁悲從中來。次日升殿議事,先主動攬過,稱滅國是寡人責任,復國是眾臣功勞。然后論功行賞,先拜公子申為令尹,公子結為左尹。又欲拜申包胥為右尹,但他因心中愧疚,堅決推辭不受,隨即辭官歸隱。第二年,楚國欲伐吳復仇,結果反被吳太子終累擊敗,統帥潘子臣被俘。楚國朝野震動,君臣無不恐懼。同時,楚昭王見郢都殘破,心中不是滋味,遂命公子申興建并遷都鄀城(襄陽宜城市東南),史稱“鄀郢”。鄀郢城址不詳,但貴為楚都,想必也不遜色。鄢郢雖降格為鄢邑,但仍為軍事重鎮,常為楚王游宮。令人驚奇的是,楚國經此一劫,君臣反而團結了,政治反而清明了,人才反而增多了,自靈、平以來,又呈現復興氣象。
至此,在今襄陽市境已有“兩都兩城”,即鄢郢、鄀郢和樊城、鄧城,在楚國歷史上獨一無二。當然,此時的吳城風頭正勁,相比恢復中的襄陽諸城,似乎更勝一籌。