垓下之戰發生於前202年(漢五年十二月),是楚漢戰爭的最後一場決戰。劉邦集結韓信、彭越、英布等各路兵馬,將西楚霸王項羽圍困在垓下(一般認為在今安徽靈璧東南)。楚軍兵少食盡,夜聞「四面楚歌」而軍心瓦解。項羽率八百餘騎突圍南走,一路折損,最後在烏江自刎。這一戰結束了長達四年的楚漢相爭,劉邦隨即稱帝,建立漢朝。
前203年,楚漢兩軍在滎陽、成皋一帶長期對峙,楚軍糧盡,漢軍也疲憊不堪。雙方於是議和,約定以鴻溝為界,以西歸漢、以東歸楚,項羽並送還被俘的劉邦家屬,引兵東歸。
劉邦原本也打算西歸,張良與陳平卻勸他:漢已據有天下大半,諸侯歸附,而楚軍兵疲糧盡,這正是天亡楚的時機,若此時放走項羽,無異於養虎遺患。劉邦採納了這個建議,背約追擊。
漢軍追到陽夏以南,劉邦與韓信、彭越約定會師夾擊,兩人卻都沒有前來。項羽回頭反擊,在固陵大破漢軍,劉邦只得堅壁自守。張良指出,韓信、彭越不來,是因為劉邦還沒有明確分封他們土地。劉邦於是許諾把陳以東直到海濱的土地封給韓信,睢陽以北到穀城的土地封給彭越。兩人得到承諾,立即率軍南下。
與此同時,劉賈率軍深入楚地,包圍壽春,並誘降了楚國大司馬周殷。周殷舉九江之兵叛楚,隨劉賈、英布攻下城父。各路漢軍從北、東、南三面向項羽收攏,最終會集於垓下。
據《史記·高祖本紀》記載,漢軍由韓信統率三十萬大軍正面迎敵,孔將軍(孔聚)居左翼,費將軍(陳賀)居右翼,劉邦在後,周勃、柴武又在劉邦之後。項羽的兵力約十萬。韓信先與楚軍交鋒,戰況不利而後撤;孔聚、陳賀從左右兩翼夾擊,楚軍失利,韓信再乘勢反攻,楚軍在垓下大敗。
項羽退入營壘,兵少糧盡,被漢軍與諸侯軍重重包圍。夜裡,漢軍四面都唱起楚地的歌謠,項羽大驚道:「漢皆已得楚乎?是何楚人之多也!」他在帳中飲酒,對著愛姬虞姬與坐騎騅馬,慷慨悲歌:「力拔山兮氣蓋世,時不利兮騅不逝。騅不逝兮可奈何,虞兮虞兮奈若何!」左右皆泣,無人能仰視。
當夜,項羽率麾下壯士八百餘騎突圍南走。天亮後,漢軍才發覺,派騎將灌嬰率五千騎追擊。項羽渡過淮水時,跟得上的只剩百餘騎;到了陰陵迷路,向田間老農問路,被騙往左走,陷入大澤,因此被漢軍追上。到東城時,身邊只剩二十八騎,而追兵有數千人。項羽自知無法脫身,對部下說「此天之亡我,非戰之罪也」,分兵四隊衝殺,斬漢將、殺數十百人,證明自己並非戰敗。
項羽最後來到烏江,烏江亭長備好船隻,勸他渡江回江東再起。項羽笑著拒絕:當年與江東子弟八千人渡江西進,如今無一人生還,縱使江東父老憐憫他、擁他為王,他又有何面目相見?他把騅馬送給亭長,下馬步戰,獨自殺死漢軍數百人,身受十餘處創傷,最後自刎而死。王翳取得他的首級,楊喜、呂馬童、呂勝、楊武各得一部分遺體,五人因此都被封侯。
項羽死後,楚地各城相繼投降,只有魯城堅守不下,直到劉邦拿項羽的首級給魯人看,魯人才投降。劉邦以魯公之禮把項羽安葬在穀城,親自為他發喪。項氏族人沒有被誅殺,項伯等四人還被封侯,賜姓劉氏。
前202年二月,劉邦在定陶附近的汜水北岸即皇帝位,建立漢朝。戰後,韓信從齊王改封楚王,彭越受封梁王,英布為淮南王,楚漢之際的群雄割據告一段落。但這些異姓諸侯王在漢初幾年內相繼被削奪、誅滅,韓信、彭越、英布都沒有善終。
垓下之戰留下的「四面楚歌」「霸王別姬」等故事,成為後世戲曲、詩文的重要題材。琵琶曲〈十面埋伏〉描寫的也是這場戰役;「十面埋伏」一詞並不見於《史記》,是後世對韓信佈陣的說法。