关中安定后,刘邦发现项羽已经陷入齐赵联军的夹击,他认为出兵争夺天下的时机已经到来,所以决定出关东进。就在这时,义帝被项羽阴谋杀害,刘邦闻讯后,痛哭不已随后宣告天下,希望天下诸侯合兵一处,共同讨伐项羽。这样,刘邦便在舆论上抢得了先机。接着,他以为义帝发丧为名,派人联络诸侯,公开声讨项羽。
公元前205年春,汉军犹如神兵大降,很快便占据了河内地区。
形势对项羽非常不利,此时他仍陷于齐地无暇回顾。于是刘邦乘机率领军队渡过黄河、占领了洛阳以东的广大地区,接着一举攻占彭城。项羽闻讯后,急率精兵支援彭城。双方在彭城西遭遇,刘邦大军虽有六十万,但最后却全部溃逃。不久,汉军又在沛县大败、死伤惨重;接着,双方又在彭城雎水上大战,汉军大败,汉军尸体堵塞了雎水。最后,刘邦被项羽军团团围困。在无路可退之时,突然大风骤起,碎石横飞,转眼间,天地昏暗,漆黑一片。项羽军中乱成一团,刘邦乘乱逃出重围,赶到下邑,遇到了内兄吕周的大军而各诸侯王见楚強汉弱,便又纷纷背汉附楚。
随后,刘邦退往荥阳,军队得到萧何征得的关中兵员的补充,韩信此时亦率援军赶到。刘邦率军在荥阳南打败楚军,阻遏了楚军的西进攻势。此后,楚汉双方便在荥阳地区进入了相持阶段。
刘邦为打开局面,全力争取项羽手下大将英布,通过各种方法联合反楚力量。项羽也派人数次切断汉军的运粮通道,并最终困了汉军。
眼见走投无路,刘邦便准备与项羽议和,并提出以荥阳为分界线划分领土。项羽认为此条件可以答应,但范增坚决反对,认为现在正是消灭汉军的最佳时机。刘邦用陈平的反间计,使项羽开始怀疑范增。此后,凡是范增的计谋,项羽都不予采纳。范增无奈,只好踏上了返乡的旅程,却病逝于途中。自此,项羽身边便再无擅长谋划之人。
随后,项羽猛攻荥阳,此时刘邦已无路可逃。这时,汉军大将纪信决定假扮刘邦,投降项羽。当化装成汉王模样的纪信坐在一乘龙车上出降时,刘邦等人便乘机突出重围。项羽知道上当后,气愤至极,下令烧死纪信以泄恨。
项羽占领荥阳后,立即率军奔赴成皋(今河南荥阳西汜水镇),并一举攻克。不久,成皋被刘邦夺回。项羽回师救援,结果双方又在荥阳相持不下。
为打开局面,项羽以烹煮刘邦之父刘太公(刘太公与刘邦之妻吕雉在彭城之战中被项羽所俘)相要挟,逼迫刘邦出城投降。刘邦干脆要起无赖:“我和你曾'约为兄弟',所以我的父亲就是你父亲。你一定要煮我父亲,就请便吧,不过别忘了给我留碗肉汤。”项羽听了气得七窍生烟,下令将刘邦的父亲杀死。旁边的项伯忙劝道:“将军,现在谁能得天下还很难说,何况争天下的人都是不顾家人生死安危的,杀了他的亲人也起不到什么作用,相反倒会增加双方的仇恨。”项羽只得作罢。
之后,项羽又约刘邦单打独斗。刘邦大骂项羽,历数他的种种罪状,如违背咸阳之约、杀死首领宋义、杀死秦王子婴、坑杀秦卒二十万、暗害义帝等,还说要率领众将领诛杀项羽。项羽气得火冒三丈,拉弓射了刘邦一箭,结果正中刘邦的胸部。刘邦为了稳定车心、迷惑项羽,便故意弯腰摸脚道:“真是蠢物,射技太差了,只能射到我的脚趾。项羽无计可施,只好率军回营。
楚汉双方一直对峙了一年多,因有关中和蜀地的支援,刘邦逐渐占了上风,而项羽则因兵源缺乏,粮草不足,难以抗敌。在这种情况下,刘邦让项羽释放自己的家人。迫于无奈,项羽只好答应,并和刘邦签了停战协定:楚汉以鸿沟(今河南荥阳、中牟和升封一线)为分界线,东西分治,东归楚,西归汉。