楚军中计
吴国君臣见楚军主动出击,遂采取后退疲敌、寻机决战的方针,主动由汉水东岸后撤。子常中计,挥军直追。吴军以逸待劳,在小别(山名,今湖北省境内)至大别(山名,今湖北省境内)间迎战楚军,三战三捷。子常连败三阵,便想弃军而逃。史皇对他说“国家太平时,你争着执政,现在作战不利,你就想逃跑,这是犯了死罪。现在你只有与吴军拼死一战,才可以解脱自己的罪过。”子常无奈,只得重整部队,在柏举(今湖北麻城,一说湖北汉川)列阵,准备再战。
吴国获胜
公元前506年(周敬王十四年)农历11月18日,吴军停止后退,在柏举与楚军对阵。吴军先锋夫概认为应先发制人,他对吴王阖闾说:“子常这个人不仁不义,楚军没有几个愿为他卖命。我们主动出击,楚军必然溃逃,我军主力随后追击,必获全胜。”阖闾不同意夫概意见。
夫概回营后,对部将说:“既然事有可为,为臣子的就应见机行事,不必等待命令。现在我要发动进攻,拼死也要打败楚军,攻入郢都。”于是率领自己的5千前锋部队,直闯楚营。果然楚军一触即溃,阵势大乱。阖闾见夫概部突击得手,乘机以主力投入战斗,楚军很快便土崩瓦解。史皇战死,子常弃军逃往郑国。
丧失主帅的楚军残部纷纷向西溃逃,吴军乘胜追击,到柏举西南的清发水(今湖北省安陆市境内涢水)追上楚军,阖闾欲立即展开攻击,夫概认为乘其半渡而击,必获大胜。楚军见吴军追至而未进攻,急于求生,争相渡河。待其半渡之时,阖闾挥军攻击,俘虏楚军一半。
渡过河的楚军逃到雍澨(今湖北京山县境),正埋锅造饭,吴军先锋夫概部追至,楚军仓惶逃走。吴军吃了楚军做的饭,继续追击。楚左司马沈尹戍得知子常(囊瓦)主力溃败,急率本部兵马由息(今河南息县境)赶来救援。吴军先锋夫概部在沈尹戍部突然的凌厉反击下,猝不及防,一下被打败。吴军主力赶到后,孙武指挥部队迅速将沈尹戍部包围。尽管沈尹戍左冲右突,奋勇冲杀,受伤三处仍无法冲出包围。最后沈尹戍见大势已去,遂令其部下割下自己的首级回报楚王。
楚军失去主帅,惨败溃逃。此后,吴军又连续五战击败楚军,一路向郢都扑去。楚昭王得知前线兵败,不顾大臣子期、子西的反对,带领亲信逃走。昭王西逃的消息传到军前,楚军立即涣散,子期率部分精兵赶去保护楚王,子西则率残兵西逃,吴军于公元前506年(周敬王十四年)农历11月29日攻入楚国都城郢都(今湖北省荆州市荆州区城北)。柏举之战遂以吴军的胜利而告结束。
战争结果
吴军攻占郢都后,进行了屠城,到处烧杀抢掠,引起了楚人的仇恨。楚昭王出逃后,先逃到云梦,再逃到郧国,郧公之弟企图谋杀楚昭王,结果楚昭王流亡到随国,方才安定下来。伍子胥进入郢都后,寻得楚平王之墓,开棺并鞭尸三百,又寻找楚昭王。随国收留楚昭王,阖闾命随国交出,但随国因为占卜结果不利而拒绝。
申包胥得知伍子胥鞭尸,派人指责伍子胥,并于公元前505年(周敬王十五年)春到秦国求救。秦哀公命大将子蒲、子虎率五百乘战车联同残余楚军南下帮助楚复国,败吴军于沂,楚将子西也率兵于军祥击败吴军,秦楚联军也灭亡了吴的属国唐国。此时,越国乘吴国内空虚发兵进袭吴都,夫概又企图夺取王位,吴王阖闾被迫于同年九月撤离楚地,引兵东归。楚国虽然复国,但元气大伤,一蹶不振。