楚(春秋國名,都郢,位于今湖北省荊州市西北紀南城)平王七年(前522年)春天,楚國太子少傅(太子輔導老師,協助主管太子宮事務)費無忌(《左傳》記作“費無極”)誣告太子建串通太子太傅(太子輔導老師,主管太子宮事務)伍奢謀反。楚平王信以為真,當即下令逮捕伍奢,并派人去處死鎮守城父(位于今安徽省亳州市東南)的太子建。太子建聞訊後逃到宋國(都商丘,位于今河南省商丘市南)。接着,費無忌向楚平王進讒言,請求平王把伍奢兩個兒子伍尚、伍員召來,将其父子三人一齊殺掉,以免留下後患。于是,楚平王傳令召見伍氏兄弟,許諾他們應召就釋放其父,否則就将其父殺死。
接到楚平王召令後,伍尚打算應召前往以挽救父親。伍員對其兄伍尚說:“平王召見我們兄弟,不是要釋放我們的父親,而是要将我們父子三人一起殺死,斬草除根。與其這樣白白送死,不如逃到别的國家,将來還可以為父親報仇雪恨。”伍尚回答說:“我也知道,縱使我們應召前往,也難以保住父親的性命,但國王既然傳話,許諾我們應召就釋放父親,我們如果不去,豈不是對不起父親,也讓天下人恥笑嗎?你就快點離開吧,要永遠記住為父親報仇!我去陪父親同死。”
伍氏兄弟揮淚訣别。伍尚挺身就捕。伍員拉弓自衛,擺脫兵士追捕,随即改名伍子胥出逃。他聽說太子建逃至宋國,便逃往宋國追随太子建。之後,楚平王下令将伍奢、伍尚父子處死。
當年六月,宋國右師(相當于副宰相,主管教育)華亥等人發動叛亂。伍子胥為了避禍,随同太子建從宋國逃到鄭國(都鄭,位于今河南省新鄭市),受到鄭國君臣以禮接待。不久,太子建出訪晉國(都新田,位于今山西省曲沃縣西北),恰逢晉頃公準備出兵攻打鄭國。晉頃公要太子建回到鄭國後充當晉軍内應,許諾晉軍滅亡鄭國後,将把原鄭國的土地封給他,太子建點頭答應。太子建回到鄭國後,因為某件私事發怒,揚言要處死他的一個随從。這個随從向鄭國官員告發太子建與晉頃公的陰謀。鄭定公和宰相子産聽說後非常惱火,當即派人将太子建殺死。
伍子胥害怕受牽被殺,帶着太子建的兒子勝落荒而逃,向南投奔吳國(都吳,位于今江蘇省蘇州市)。逃到昭關(位于今安徽省含山縣西北小岘山上)時,鎮守昭關的楚國官兵要抓捕他們。伍子胥領着勝徒步逃跑,楚兵窮追不舍。他們逃到長江邊,躲進一個漁翁的小船,漁翁将他們送到長江南岸。伍子胥感激漁翁救命之恩,解下身上的佩劍贈給漁翁。他對漁翁說:“我身上沒有值錢的東西,隻有這把劍能值一百金,就送給您老人家吧!”漁翁辭而不受,回答說:“楚國以五萬石糧食和最高爵位,懸賞捉拿伍子胥。我同情你們父子蒙受冤屈,幫你躲過追兵,不是貪圖你這把價值百金的寶劍!”伍子胥不敢停留,匆匆告别漁翁。這時,他連驚帶累生了病。他身無分文,隻好強撐病體,帶着勝沿路乞讨,飽嘗一番艱辛之後才輾轉進入吳國。
伍子胥在吳國落腳後,設法結識将軍公子光,通過公子光見到吳王僚(公子光堂弟),得以侍奉在吳王僚和公子光身邊。吳王僚九年(前518年),楚國邊邑鐘離(位于今安徽省鳳陽縣東北臨淮關鎮)和吳國邊邑發生兩女為養蠶争采桑葉一事。楚平王大為惱火,出兵攻打吳國。吳王僚派公子光領兵反擊楚軍,占領楚國鐘離和居巢(位于今安徽省六安市東北)。伍子胥認為乘勝可以一舉攻破楚國,勸吳王僚派公子光繼續向楚國進軍,公子光則以伍子胥意在為自己父兄複私仇而加以推辭。伍子胥看出公子光不想在對外征戰中建功,而懷有除掉吳王僚自立為王的用心,便迎合他的心意,為他推薦勇士專諸。然後,伍子胥和勝隐居鄉下種田,觀察吳國事态的發展變化。
吳王僚十一年(前516年)秋天,楚平王去世,太子轸(《史記》卷四十《楚世家》記作“珍”)繼位,是為楚昭王。第二年春天,吳王僚乘楚國守喪之機,派其同母弟掩餘(《史記》卷三十一記作“蓋餘”)和燭庸率軍襲擊楚國潛地(位于今安徽省霍山縣東北)。楚軍切斷吳軍退路,掩餘、燭庸部衆被困在楚國六地(位于今安徽省六安市東北)不能撤返。四月,公子光乘國内兵力空虛之機,指使專諸刺殺吳王僚,奪取吳國王位,為吳王阖廬。掩餘、燭庸聽說公子光殺死國王,自立為王,随即率其部衆投降楚國。楚國将舒地(位于今安徽省廬江縣西南)封給他們。
吳王阖廬即位後感念伍子胥的幫助,将他任命為行人(主管朝廷禮儀兼奉命出使),讓他參與商量國家大事。當年夏天,楚國殺死大臣伯州犁及其兒子郤宛。伯州犁的孫子伯嚭逃亡到吳國。吳王阖廬任命伯嚭為大夫(朝廷中等級别的官員)。
吳王阖廬三年(前512年),吳王率伍子胥、伯嚭領兵攻克舒地,将掩餘、燭庸俘獲。吳王阖廬六年(前509年),楚昭王派兵攻打吳國。伍子胥奉命領兵迎擊,在豫章(位于今安徽省壽縣至合肥市一帶)擊敗楚軍,奪取楚國居巢。吳王阖廬九年(前506年)冬天,吳王采納伍子胥和将軍孫武的計謀,聯合唐國(位于今湖北省随州市西北)和蔡國(都新蔡,位于今河南省新蔡縣),共同出兵攻打楚國,五戰皆捷。吳國軍隊随即攻入楚國都城郢,楚昭王倉皇出逃。伍子胥令人挖開楚平王的墳墓,毀其棺,暴其屍骨,親手鞭打三百下,報殺父之仇,一吐心中怨氣。
楚國大臣申包胥是伍子胥當年的老朋友,此時逃匿在山中。他聽說伍子胥掘開楚平王之墓鞭屍複仇,派人對伍子胥說:“你報仇的舉動,未免太過分了吧!原來,你是平王的臣子,稱臣侍奉過大王。如今,他已死去多年,你仍不肯放過,挖出他的屍骨肆意侮辱。你這樣做不是喪盡天良無以複加了嗎?”伍子胥對來人說:“請代我向申包胥表示歉意。當初我被逼到窮途末路的地步,是以今天要倒行逆施!”之後,申包胥去秦國求來援軍,将吳軍擊退。
吳王阖廬十九年(前496年),吳王阖廬率軍攻打越國(都會稽,位于今浙江省紹興市),因腳趾被毒箭射傷去世。臨終前,他叮囑太子夫差不要忘記越王勾踐的殺父之仇。夫差回答說:“任何時候也不會忘記。” 伍子胥曾為夫差争立太子效力,夫差稱王後欲将吳國部分土地劃分給伍子胥。伍子胥沒有這一奢望,當即辭謝。伯嚭為人奸詐,善于迎合上意,受到吳王夫差的信任,被任命為太宰(宰相)。
吳王夫差二年(前494年),吳軍打敗來犯的越軍,将越王勾踐部衆包圍在會稽山(位于今浙江省紹興市境内)。越王勾踐派大夫文種用厚禮賄賂伯嚭求和,伯嚭為文種引見吳王。吳王想答應越國求和的請求,伍子胥進言說:“越王眼下屈居大王之下,是以屈求伸。大王現在如果不乘勝消滅他,将來一定會後悔!”此時,吳王夫差已經淡忘勾踐殺父之仇。他沒有采納伍子胥的意見,而聽信伯嚭的話同越國講和。
吳王夫差八年(前488年),齊國(都臨淄,位于今山東省淄博市東)發生内亂,吳王夫差準備率軍進攻齊國。伍子胥勸谏說:“勾踐親自耕種田地,吃飯不準上第二種葷菜。他悼念死難将士,慰勞貧苦百姓,籠絡人心,其志不在小。勾踐這個人不死,必定是吳國的後患。如今,眼看越國複興變強,越國才是吳國最大的威脅。大王不首先滅亡鄰近的敵國,而去遠征齊國,恐怕不妥吧?”吳王仍然沒有接受伍子胥的規勸,決定出兵攻齊。
吳王夫差十二年(前484年)春天,吳王準備乘齊軍進攻魯國(都曲阜,位于今山東省曲阜市)之機,再次出兵攻打齊國。越王勾踐聽說後,派人用重金賄賂伯嚭。伯嚭受賄後竟蓄意庇護勾踐,鼓動吳王出兵攻打齊國。對于吳王忘記殺父之仇,聽信伯嚭胡言,丢下越國不打而遠攻齊國,伍子胥非常痛心。他再次向吳王進言說:“越國是吳國的心腹之患。如果聽信太宰伯嚭的花言巧語,即使攻下齊國,亦如同得到一塊全是石頭的田地一樣,沒有多大用處。
而今越國一天天強大起來,留下這個禍患不除,将會後悔莫及!”吳王夫差聽不進伍子胥的意見,反而強令他出使齊國探聽虛實。伍子胥臨走時對他的兒子說:“我多次勸谏大王先滅亡越國,先不要攻打齊國,大王總是不聽。眼看吳國滅亡的日子不會很遠了,你繼續留在吳國沒有好處。”于是,伍子胥帶着他的兒子一起來到齊國。他把兒子托付給齊國執政大臣鮑牧,然後回吳國複命。
伯嚭對伍子胥老是盯着越國而反對遠征齊國,總是同他唱反調心懷忌恨。伍子胥從齊國傳回後,伯嚭在吳王面前讒告說:“伍子胥為人剛強暴烈,缺少恩德。當初,他反對攻打齊國。我軍取勝後,他反而忌恨。這次,我暗中派人監視,他出使齊國,竟把兒子托付給鮑牧,裡通外國的迹象已經十分明顯。此人一向狡詐多疑且心狠手毒,留下他恐怕會釀成大禍。建議大王趁早考慮這件事。”吳王回答說:“你不說,我也早就懷疑他了。”于是,吳王随即派人給伍子胥送去一把屬镂利劍,逼令他用這把劍自殺。
伍子胥接過吳王夫差所賜屬镂利劍,不禁仰天長歎:“唉呀呀!奸臣伯嚭當權作亂,大王聽信他的讒言居然要殺死我!想當初,我幫你父王稱霸,冒死為你在父王面前争立太子。如今,你聽信谄媚小人的話,竟派人來殺害我這個老臣!”伍子胥按捺不住心中的悲憤,轉身對門客說:“我死後,你們把我的眼睛挖下來放在都城的東門上,讓我親眼看着越國軍隊打過來滅亡吳國!”說罷,伍子胥舉劍自殺。吳王夫差二十三年(前473年)十一月,越王勾踐經過長達二十餘年的充分準備,率軍一舉攻滅吳國。吳王夫差被俘,伯嚭被殺。
越王勾踐感念夫差當年兵圍會稽山時給他留下一條生路,沒有将夫差處死。他派人對夫差說:“把你安置到甬東(位于今浙江省舟山群島),去做一個百戶人家的主人吧!”夫差對來人辭謝說:“我已經老了,不能侍奉君王了!”其語調無限悲傷。夫差決意自殺,了此一生。臨死前,他遮住自己的臉說:“我沒有臉去見伍子胥啊!”