公元前205年5月,刘邦乘吉翔无法出齐国之机,率领56万诸侯联军攻占了西楚都城彭城。短暂的胜利就是刘邦失去理智,天天和诸侯喝酒庆祝。项羽听了,带着三万骠骑兵赶回彭城。联军猝不及防,杀敌十万,溺死十万。刘邦只带领数十骑逃走,以韩为首的反楚联盟瓦解。
同年六月,刘邦领兵回荥阳,一路收编败兵,派韩信在萧索之间击溃楚的追兵。他得以喘口气,稳住阵脚,于是重新组织军队,依托关中基地和有利地形与项羽长期作战。7月,一直负隅顽抗的张寒终于自杀,刘邦彻底解除了后顾之忧。并在逃往荥阳之前,派人劝说英布反楚,并联系彭越扰乱楚后方;派韩信开辟北方战场,攻保,破代,灭赵,杀。公元前205年冬,项羽发动反攻,围攻荥阳。形势非常危急。刘邦和陈平合谋陷害,使项羽怀疑范增,一气之下逼范增回国。刘邦还派纪信冒充自己投奔楚军,趁机逃出荥阳。吉翔加强了对荥阳的包围,并占领了高程。
为了减轻楚军对荥阳的压力,刘邦率军经武关、宛(今南阳)、邺(今邺县南),诱南下。为配合汉军的行动,韩信还率军到黄河北岸支援荥阳。彭越攻打下邳(今江苏邳州南部)。被迫率军救援,刘趁机收复。公元前204年7月,吉翔大举进攻,拿下荥阳,随后又拿下高程。
与此同时,刘邦命令汉军在珙县坚守,阻挡楚军前进。同时命令韩信组建新军,派人深入楚国腹地,协助彭越进攻绥阳县、外黄县(今民权县)等地,迫使项羽再次救援。公元前204年11月,刘邦再次收复高程(今荥阳习水镇西北),杀了项羽的大将曹禺。
吉翔打败彭越后,找不到汉军主力,安禄山光武(今荥阳北)与刘邦对峙。不久,韩信在渭水之战中歼灭了齐楚联军,完成了对楚侧翼的战略迂回,派关英率军前往彭城。吉翔腹背受敌,兵荒马乱,于是与汉结盟,以海湾分天下,东归楚,西归汉。公元前203年10月,吉翔率领他的部队向东进发。
楚汉结盟后,刘邦本想退兵,在和的提醒下,下令全力追击楚军。公元前203年11月,两军在牯岭(今淮阳西北)交战,项羽小胜。公元前202年1月,刘邦战胜了韩信、彭越、黥布等。通过奖励他们,他在接下来的战斗中打败了楚军。
公元前202年1月,刘邦、韩信、刘嘉、、英布等约70万汉军。在垓下(今安徽灵璧县南)与久战疲惫的十万楚军决战。韩信引汉军居中,孔为左翼将军,陈赫为右翼将军,刘邦领兵跟进,周波为将军。
韩信侵攻,采用诱敌深入的战术。前军先诈,信领兵后撤,命左右翼军包抄,攻楚军后步。汉军在楚军疲惫之后,与项羽前军的骑士将楚的后军一分为二。韩信于是指挥全军反击。楚军大败,阵亡4万余人,被俘2万,被散2万。只有不到两万伤兵随项羽回阵。
楚军退入屏障后,被汉军包围。楚士兵都筋疲力尽了。韩信命令汉军士兵晚上唱楚歌,说: 人心在楚,天下归刘;韩信,拿着纸条,去砍霸王的头! 。
导致楚军将士想家厌战,士气崩溃。项羽只率领八百人突围到乌江(今安徽省和县)。此时项羽身边只剩下28名骑手。有个亭长愿意带项羽去江东重振霸业,被项羽拒绝了。项羽率28军与汉军交战,最后全军覆没。项羽不愿被俘受辱,死于乌江。
于是刘邦到了定陶,快马加鞭地进了韩信的军队,夺取了他的兵权,后来改称韩信为楚王,到了邳州(今江苏邳州东)。