很快,在汉元年五、六月份,齐国贵族后裔田荣不满分封,赶走齐王,杀胶东王,自立为齐王。刘邦乘乱重返关中,击败章邯,迫降司马欣、董翳,并用计欺骗项籍,使其相信自己取得关中后已心满意足,再也不会东进了。项籍放心去攻打田荣,对西边没有加强防范。项羽则最终陷入齐地泥潭无法抽身。这样给了刘邦绝佳的机会。
楚汉之争
彭城之战
公元前205年5月,刘邦乘项籍在齐国停留的机会,率领诸侯联军56万一举攻占彭城。短暂的胜利是刘邦失去理智,天天与诸侯们喝酒庆祝。项羽闻之,急率轻骑兵3万奔袭,联军被杀十万,溺水淹死十万,刘邦仅率数十骑逃脱,反楚联盟瓦解。
荥成对峙
同年6月,刘邦到达荥阳,一路收集败兵,并派韩信于萧索之间击败了楚追兵,得以喘息,稳住了阵脚,遂重整军队,依托关中基地和有利地势与项羽长期抗争。7月,一直负隅顽抗的章邯终于兵败自杀,刘邦解除了后顾之忧;且在逃往荥阳前便派人说服英布反楚,联络彭越扰楚后方;派韩信开辟北方战场,攻魏俘魏王豹,破代,灭赵杀陈余。公元前205年冬,项羽发动反攻,围困荥阳,形势十分危急。刘邦用陈平反间计,使项羽怀疑范增,不用其谋,迫使范增怒而归乡。刘邦又派纪信装扮成自己去楚军诈降,乘机逃出荥阳。项籍加紧围攻荥阳,并夺取成皋。
为了减轻楚军对荥阳的压力,刘邦率军经武关、宛(今河南南阳)、叶(今叶县南),想引诱项籍南下。为配合汉军行动,此时韩信也率军到达黄河北岸,声援荥阳。彭越正在进攻下邳 (今江苏邳州南)。项籍被迫率军回救,刘邦乘机收复成皋。公元前204年7月,项籍以凌厉攻势拔荥阳,再夺成皋。
鸿沟为界
刘邦一面命汉军在巩县一带坚守,阻击楚军前进,一面命韩信组建新军击齐,派人入楚腹地协助彭越进攻雎阳(今河南商丘南)、外黄等地,再次迫使项羽回救。公元前204年11月,刘邦用计再次收复成皋,斩杀了项羽大将曹咎。