汉军东出
汉二年(公元前205年),刘邦在基本平定三秦后,准备东出与项羽争天下。他出关到陕,慰问那里的父老。三月,刘邦率军从临晋渡河,魏王豹将兵从。很快攻下河内,俘虏殷王司马卬,置河内郡。南渡平阴津到洛阳,降河南王申阳。这时有新城三老董公等挡在刘邦马前诉说义帝的死亡经过。汉王闻后,大哭一场,遂为义帝发丧,举哀三日。然后向各诸侯王发布项羽大逆无道的罪状,并以此为借口号召各诸侯王率兵与自己一起讨伐项羽为义帝报仇。从而正式拉开了四年楚汉战争的序幕。
彭城之战
公元前205年5月,刘邦乘项羽深陷于齐国,无力抽身的机会,率领诸侯联军56万一举攻占西楚都彭城。短暂的胜利是刘邦失去理智,天天与诸侯们喝酒庆祝。项羽闻之,急率轻骑兵3万回袭彭城,联军无备,一时被杀十万,溺水淹死十万,刘邦仅率数十骑逃脱,以汉为首的反楚联盟瓦解。
荥成对峙
同年6月,刘邦率部退到荥阳,一路收集败兵,并派韩信于萧索之间击败了楚追兵,得以喘息,稳住了阵脚,遂重整军队,依托关中基地和有利地势与项羽长期抗争。7月,一直负隅顽抗的章邯终于兵败自杀,刘邦完全解除了后顾之忧;且在逃往荥阳前便派人说服英布反楚,联络彭越扰楚后方;派韩信开辟北方战场,攻魏俘魏王豹,破代,灭赵杀陈余。公元前205年冬,项羽发动反攻,围困荥阳,形势十分危急。刘邦用陈平反间计,使项羽怀疑范增,不用其谋,迫使范增怒而归乡。刘邦又派纪信装扮成自己去楚军诈降,乘机逃出荥阳。项羽加紧围攻荥阳,并夺取成皋。
为了减轻楚军对荥阳的压力,刘邦率军经武关、宛(今南阳)、叶(今叶县南),想引诱项羽南下。为配合汉军行动,此时韩信也率军到达黄河北岸,声援荥阳。彭越正在进攻下邳(今江苏邳州南)。项羽被迫率军回救,刘邦乘机收复成皋。公元前204年7月,项羽以凌厉攻势拔荥阳,再夺成皋。
鸿沟为界
刘邦一面命汉军在巩县一带坚守,阻击楚军前进,一面命韩信组建新军击齐,派人入楚腹地协助彭越进攻睢阳县、外黄县(今民权县)等地,再次迫使项羽回救。公元前204年11月,刘邦用计再次收复成皋(今荥阳汜水镇西北),斩杀了项羽大将曹咎。
项羽在击败彭越后,寻汉军主力决战不成,屯兵广武(今荥阳北)与刘邦形成对峙。不久,韩信在潍水之战中歼灭齐楚联军,完成对楚侧翼的战略迂回,又派灌婴率军一部直奔彭城。项羽腹背受敌,兵疲粮尽,遂与汉订盟,以鸿沟为界,中分天下,东归楚,西归汉。公元前203年10月,项羽引兵东归。
垓下之战
楚、汉订盟后,刘邦本想退兵,在张良、陈平提醒下,下令全力追击楚军。公元前203年11月,两军战于固陵(今淮阳西北),项羽小胜。公元前202年1月,刘邦以封赏笼络韩信、彭越、黥布等,垓下一战重创楚军。
公元前202年1月,刘邦、韩信、刘贾、彭越、英布等各路汉军约计70万人与10万久战疲劳的楚军于垓下(今安徽灵璧县南)展开决战。汉军以韩信率军居中,将军孔熙为左翼、陈贺为右翼,刘邦率部跟进,将军周勃断后。
韩信挥军进攻,采用诱敌深入战术,前军先诈败,信引兵后退,命左、右翼军包抄攻击楚军后部步军。楚军久战疲劳后军迎战不利,汉军将楚后军与项羽前军骑士分割两半,韩信再指挥全军反击,楚军大败,阵亡四万余,被俘两万,被打散两万,仅剩不到两万伤兵随项羽退回阵中。
后楚军退入壁垒坚守,被汉军重重包围。楚军兵疲食尽。韩信命汉军士卒夜唱楚歌,歌云:“人心都向楚,天下已属刘;韩信屯垓下,要斩霸王头!”。
致使楚军士卒思乡厌战,军心瓦解,项羽只有率800人突围至乌江(今安徽省和县境),这时项羽身边只剩下28骑了,一亭长愿带项羽逃至江东重振霸业,遭项羽拒绝。项羽带着28骑大战汉军,最后全军覆没,项羽不愿被俘受辱,于是在乌江自刭而死。
刘邦于是还至定陶,驰入韩信军中,收夺了他的兵权,后改封韩信为楚王,都下邳(今江苏邳州东)。
君临天下
在公元前202年2月,刘邦兑现了先前的诺言,封韩信为楚王,彭越为梁王。受封的韩信和彭越联合原来的燕王臧荼、赵王张敖以及长沙王吴芮共同上书刘邦,请他即位称帝。刘邦开始假意推辞,韩信他们说:“大王虽然出身贫寒,但能率领众人扫灭暴秦,诛杀不义,安定天下,功劳超过诸王,您称帝是众望所归。”刘邦顺水推舟地说:“既然你们大家都这样看,觉得有利于天下吏民,那就按你们说的办吧。”
公元前202年2月28日(按西汉前期以十月为岁首,同年二月在十月之后),刘邦在山东定陶汜水(今山东曹县北)之阳举行登基大典,定国号为汉,是为汉高帝。刘邦即皇帝位后,王后吕雉改称皇后,太子刘盈称皇太子。刘邦最初定都洛阳,后根据戍卒娄敬的建议,定都咸阳以东的长安(今陕西西安),取长治久安之意。开基肇始,史称西汉。