刘邦之所以能够大胆地对章邯等人采取攻势,原因在于彼时齐国已显现出对项羽权威的挑战迹象。出身齐国贵族世家的田荣因对项羽的分封不满,废黜了项羽所立的齐王,自行称王,并高调宣称要挑战项羽的霸权。一方面,刘邦已牢固控制了关中大片领土;另一方面,齐国的动荡不安令项羽面临抉择,不知该优先平定哪一方的叛乱。在此背景下,张良适时地给项羽送去一封信函,指出刘邦仅满足于占据关中,并无意进一步扩张,而那些心怀觊觎整个江山的诸侯王才是首要解决的对象。
项羽听信张良之言,暂时放松了对刘邦的警惕,转而全力以赴地攻打齐国。正当楚军与齐军激烈交战之际,刘邦瞅准时机,以恢复义帝的名义集结诸侯联军,挥师东进,目标直指西楚霸王项羽。
汉二年(公元前205年)四月,刘邦统帅大军进攻楚国首都彭城。由于项羽率主力征战齐国,彭城守备空虚,刘邦趁机在洛阳纠集了数十万兵马,兵分多路直扑彭城。其中,曹参、灌婴和周勃率领的汉军部队成功从围津(今山东东明)渡过黄河,在定陶击败了楚军将领龙且和项佗,并迅速占领了胡陵(今山东鱼台东南);另一路由南方绕道叶县(今河南叶县西南)、阳夏,从南面包围彭城;而刘邦则亲自带领夏侯婴等将领及诸侯王的军队,从彭城东南方向攻占外黄(今河南兰考东南),继而向东推进。期间,彭越率三万兵马归顺刘邦,刘邦大喜,封彭越为魏相,并令其攻打梁地(今河南东北部)。不久后,刘邦轻松攻入了彭城。
远在齐国前线的项羽得知彭城陷落,勃然大怒,但由于大部分兵力已被牵制在齐国战场,项羽决定孤注一掷。他集结三万精锐,星夜兼程,首先攻占了萧县,截断刘邦军队的退路,紧接着趁刘邦在彭城享乐狂欢之际发动突袭。项羽身先士卒,以一敌百,极大地激发了楚军士气,双方于清晨交战,至午间时分,汉军就被打得节节败退,刘邦带领残部退至谷水、泅水(今江苏徐州西)一带,混乱不堪的汉军在楚军的猛烈攻击下溃不成军,十多万士兵惨遭屠杀。其余汉军继续向西南方向败逃,楚军在灵璧再度形成合围,迫使十余万汉军陷入绝境,不少人纷纷跳入睢水求生。项羽原以为能就此擒获刘邦,却不料天空骤变,一场夹带沙石的狂风突如其来,刘邦趁机带着少数骑兵逃离现场。彭城之战,刘邦遭受前所未有的重创,原先与刘邦结盟的诸侯王见状纷纷被项羽的威势震慑,转而投靠楚军。
汉二年六月,韩信成功击溃了来剿灭汉军残部的楚军,刘邦重新招募兵马,在荥阳休整并积蓄力量,继续与项羽展开对抗。章邯持续与刘邦交战,至七月,终因力不能支,被刘邦击败,最后自杀身亡。
刘邦派遣使者劝诱英布背叛项羽,彭越则时常在楚军周边制造小规模冲突,令项羽疲于应对。与此同时,韩信北上攻占了魏国,魏王豹被捕,代国与赵国也随之相继灭亡。
不久后,项羽组织起了强大的反击,楚军将荥阳围困得严丝合缝,这让刘邦陷入了困境,不知如何突破重围。此时,刘邦身边的一位来自楚国的谋士陈平提出了一个关键性的计策。陈平深知项羽的得力助手范增对于楚军的重要性,建议刘邦设计离间项羽与范增的信任关系,从而削弱楚军战斗力。刘邦依计行事,散布谣言称范增与汉国有秘密联系,项羽果然再次中计,对范增产生了深深的疑虑。范增得知此事后,既愤怒又失望,声称年事已高,打算返乡养老,但在返家途中因病情恶化,不幸逝世。
范增的离去导致楚军实力受损,刘邦趁机假意向项羽投降,成功迷惑对方,最终从荥阳的重重包围中突围而出。逃脱后的刘邦与韩信联手,攻克了成皋,并迫使楚军主力撤离荥阳,转而去抵御彭越对下邳的侵扰。
公元前204年七月,楚军再次攻占了