項羽軍兵敗,再失彭城,今蘇北、皖北、豫東等廣大地區被漢軍占領之後,無法穩住局勢,隻得變主為客率領軍政官吏,攜大量貴重的物資,向東南方向撤退。此時,項羽軍更加陷入危機之中。11月,項羽率領近10萬軍隊向垓下地區敗走。到達垓下後,項羽與大將季布、鍾離昧等都認為垓下地區地形險要,可以防守,於是決定轉客為主,構築營壘,進行防禦,整頓部隊,恢複軍力,準備與漢軍在垓下地區決戰。此時,項羽軍的大致態勢是:季布軍在垓下以西以南地區;鍾離昧在垓下以東以北地區:項羽自率主力於垓下周圍地區。
韓信軍取得九裏山大捷、進占彭城後,得知項羽奉軍向彭城東南方向撤走,於是揮軍繼續向東南方追擊項羽軍。這時,楚之大司馬周殷叛楚,奉兵進占楚之六地,接著統率九江兵與將軍劉賈向北攻占城父。至此,漢軍、齊軍、九江軍及彭越的梁軍等四路大軍會師於垓下,對項羽軍進行重重包圍。當時漢軍及各諸侯軍的關係位置大致為:齊王韓信統率的齊軍駐於垓下的東北部地區;九江王英布指揮的九江兵駐紮在垓下的西南地區:梁王彭越指揮的梁軍則駐紮在垓下的北部地區。
漢方各路大軍在完成對項羽軍的包圍後,便加緊準備與項羽的最後決戰,以求徹底殲滅項羽軍。韓信為向垓下進攻,做了如下部署:將領孔熙軍為左路,將軍陳賀為右路,韓信自率主力在中路主攻。漢軍在韓信統率下,分路向垓下楚軍進攻。楚軍在項羽率領下,以主待客,奮勇力戰,多次擊退漢軍的攻勢,但由於項羽兵力已經有限,無力出擊漢軍,更難以迫使漢軍撤退,終於在漢軍多麵夾攻之下,退入營壘堅守,主客對峙。韓信軍遂以各路大軍,把項羽軍重重包圍。雙方交戰,為盡快將楚軍擊敗,張良建議劉邦采取以瓦解楚軍鬥誌為主的“攻心戰”,以楚方歸順人員和漢軍中善歌唱者,每夜高唱楚歌。
項羽兵困垓下,兵少食乏,處境更加險惡。前線堅守營壘的部隊,每日黃昏戰鬥停頓時,就會聽到楚歌。士卒聽到楚國歌聲,看到目前的處境,已大大地影響戰鬥意誌。早巳被漢軍收買的項王叔父項伯,力勸項羽夜間巡視軍營,使項羽聽到四周的楚歌聲,瓦解項羽的鬥誌。果然,項羽在聽到這些歌聲後,十分吃驚。他說:“難道漢軍已把楚國的地方全部拿下了嗎?為何他們會有這麼多楚人呢?”項羽麵對這種局麵甚為憂慮,半夜裏在營帳中飲酒解愁。
項羽有一位妃子虞姬,備受寵愛,時常跟隨在項王身邊。項羽還有一匹黑色的寶馬,名叫騅,是他最得力的戰馬。項羽邊飲酒邊悲涼地唱道:“力大能夠拔山啊,氣壯蓋過了全世,不料時勢不利啊,連烏騅馬也不濟!駿馬不濟了啊!那可叫我怎麼辦?虞姬啊!虞姬!怎麼能對得起你!”項羽接連唱了幾遍,虞姬也應和著一同唱。根據《史記正義》引《楚漢春秋》記載,虞姬當時也唱道:“漢兵已隨地,四方楚歌聲。大王意氣盡,賤妾何聊生?”唱罷,即自刎而死;項羽淚水湧,左右的人也都淚流不止,以致互相不能抬頭相看,氣氛甚為悲壯。
虞姬已死,項羽悲痛上馬出營,反主為客,率領部下800精銳騎兵乘夜突圍而去,次日天明,漢軍才得知項羽已經突圍,韓信急令灌嬰率領5000騎兵追去。由於項羽突圍之先頭騎兵疾馳而行,後續騎兵未能全部跟上,待項羽渡過淮水之後,僅跟上來百餘騎兵,項羽行至陰陵,迷失了方向,便向一個老農夫問路,老農夫騙項羽向左走。項羽於是向左急奔。但走不多遠,即陷入大水之中,行避艱難,很快被灌嬰的騎兵追上。項羽又引兵向東突進,至東城(今安徽定遠東南50裏)地區後,僅剩下28名騎士,而漢軍追兵竟有數千騎。項羽此時自料不能逃脫,便對跟隨他的騎士說:“我從起兵到現在已經8年。親身經曆過許多戰鬥,真是戰無不勝,攻無不克,從未打過敗仗,因此,做了天下的霸王。不料今天被圍困在這裏,這是天要亡我,並不是我在戰爭中的錯誤啊!”項羽接著又強調:今天要決一死戰,必須做到三戰三勝;潰圍(擊潰敵人,突出重圍)、斬將(殺敵將領)、刈旗(砍倒敵人的旗幟)。
項羽說完,將28名騎兵分作四隊,以客為主,分成四個方向,漢軍騎兵雖然包圍了數層,但項羽毫無懼色。項羽說:“吾為公取彼一將。”於是他命令騎兵堅決向敵衝殺,到達山下後,在山東分三處集合。項羽吩咐完畢後,即呼喊衝殺而下,將漢軍打得人仰馬翻,四處潰散,並斬殺漢軍騎將上千。項羽軍達山東三處集合後,漢軍再分三隊將項羽軍團團圍住,項羽又率兵衝殺,斬殺漢將一人,殺死漢軍百餘人。項羽又集中兵馬,結果發現僅亡兩騎。項羽得勝,乘漢軍混亂之際,衝出一條血路,向南疾走,準備渡過烏江。項羽到達烏江,烏江亭長撐船靠岸,等待項王上船,亭長對項王說:“江東地方雖然不大,但方圓也有千裏,有民眾數十萬,足夠建立霸業。請大王急速渡江,這一帶隻有我有船,漢軍到後將無船渡江。”