公元前205年冬,项羽在城阳大败田荣,田荣逃跑被杀。项羽兵至齐地后,毁城放火,掳掠妇女,坑田荣降卒。田荣弟田横,收集散兵,将数万人,与项羽争战,双方相持不下。刘邦乘齐、楚相争之际东进,降西魏王豹,掳殷王印,为义帝发丧,公开宣布同项羽决战。公兀前205年夏,刘邦率军攻入项羽都城——彭城。正在齐地作战的项羽得此消息,立即率精兵3万回击。刘邦溃败,退出彭城,率数十骑逃到荥阳、成皋(河南巩义市上街)一带。
公元前204年,项羽又进击刘邦,占领荥阳、成皋,刘邦节节败退。这时,刘邦虽然正面作战失利,但其部将韩信在北方抄项羽后路,连续获得胜利,占领了赵地。刘邦派人劝说九江王英布降汉,共击项羽。萧何又从关中征发兵丁补充军队,使汉军重整旗鼓,继续战斗。
公元前203年,楚汉两军在成皋一带,互有胜负,战争进入相持阶段。韩信南下攻占齐地,彭越又为汉守魏地,时出游兵断楚粮道。项羽腹背受敌,形,势对他极为不利。在长期相持之后,项羽退兵广武(河南荥阳北),想与刘邦决一死战,而刘邦则按兵不动。项羽因后援不继,不敢与刘邦作持久战,只得与汉讲和,约定中分天下,划鸿沟为界,其东属楚,其西属汉;楚放回前所俘刘邦之父及妻吕雉。约定之后,项羽罢兵东归。
项羽撤兵,刘邦也欲引兵而西,张良、陈平力劝刘邦乘势灭楚,他们认为不趁此时灭楚,则“养虎自遗患”。于是刘邦决定乘势进击,使项羽无喘息之机。公元前202年,刘邦会同诸军,约40万兵力,全力进击,将项羽紧紧包围。项羽连战失利,在力量悬殊的情况下,力战不敌,退至垓下(安徽固镇界)。项羽在四面楚歌声中溃散而逃,最后在乌江(安徽和县东北)自刎。
这就是,刘邦起自泗水亭,芒砀山上斩白蛇,三尺赤霄纵四海。三载亡秦,五年灭楚,天下定,汉业立。