汉王元年 (公元前 206年)十月,刘邦灭秦后在关中称王。十二月,项羽挥军破函谷关,想消灭刘邦军。刘邦自知不敌,亲赴鸿门(今陕西临潼东北)谢罪。不久,项羽入咸阳。春,项羽表面上尊楚怀王为义帝,实际却将其发配到了江南,自立为西楚霸王,都彭城(今江苏徐州),同时分封18诸侯,封刘邦为汉王,领巴蜀及汉中地,并故意封秦降将章邯、司马欣、董翳(意)为雍王、塞王、翟王,领关中地,以扼制刘邦。刘邦只好忍气吞声接受封号,于四月领兵入汉中、并烧毁栈道(用木板架在悬崖上铺成的道路),表示再也无意出兵,以麻痹项羽。项羽亦率军东归。五、六月,齐国贵族后裔田荣不满分封,赶走齐王,杀胶东王,自立为齐王。刘邦乘乱重返关中,击败章邯,迫降司马欣、董翳,并用计欺骗项羽,使其相信自己取得关中后已心满意足,再也不会东进了。项羽放心去攻打田荣,对西边没有加强防范。十月,刘邦挥军东出,拜韩信为大将,明修栈道,暗渡陈仓(今陕西宝鸡市东) ,名为义帝发丧,派人联络诸侯,公开声讨项羽,拉开了楚汉战争的序幕。
初战彭城:四月,刘邦乘项羽在齐国停留的机会,率领诸侯军一举攻占彭城。项羽闻之,急率精兵3万奔袭,歼联军20余万,刘邦仅率数十骑逃脱,反楚联盟瓦解。
争夺成皋:五月,刘邦到达荥阳,击败了楚追兵,得以端息,稳住了阵脚,遂重整军队,依托关中基地和有利地势与项羽长期抗争。六月,刘邦派兵攻废丘,迫章邯自杀,解除了后顾之忧;派人说服黥布反楚,联络彭越扰楚后方;派韩信开辟北方战场,攻魏俘魏王豹,破代,灭赵杀陈余。三年冬,项羽发动反攻,围困荥阳,形势十分危急。
刘邦用陈平反间计,使项羽怀疑范增,不用其谋,迫使范增怒而归乡。刘邦又派纪信装扮成自己去楚军诈降,乘机逃出荥阳。项羽加紧围攻荥阳,并夺取成皋。
为了减轻楚军对荣阳的压力,刘邦率军经武关、宛(今河南南阳)、叶(今叶县南),想引诱项羽南下。为配合汉军行动,此时韩信也率军到达黄河北岸,声援荥阳。彭越正在进攻下邳(今江苏邳县南) 。项羽被迫率军回救,刘邦乘机收复成皋。六月,项羽以凌厉攻势拔荥阳,再夺成皋。
刘邦一面命汉军在巩县一带坚守,阻击楚军前进,一面命韩信组建新军击齐,派人入楚腹地协助彭越进攻雎阳(今河南商丘南)、外黄等地,再次迫使项羽回救。四年十月,刘邦用计再次收复成皋。
项羽在击败彭越后,寻汉军主力决战不成,屯兵广武(今荣阳北)与刘邦形成对峙。不久,韩信在潍水之战中歼灭齐楚联军,完成对楚侧翼的战略迂回,又派灌婴率军一部直奔彭城。
项羽腹背受敌,兵疲粮尽,遂与汉订盟,以鸿沟为界,中分天下,东归楚,西归汉。九月,项羽引兵东归。
楚、汉订盟后,刘邦本想退兵,在张良、陈平提醒下,下令全力追击楚军。五年十月,两军战于固陵(今淮阳西北),项羽小胜。刘邦以封赏笼络韩信、彭越、黥布等,垓下一战重创楚军,逼项羽自刎于乌江(今安徽和县境) ,终于结束了为期四年的楚汉战争。