陈余发动所属三县的全部兵力,与齐军合力攻打常山,大败常山守军。张耳逃往汉地。陈余到代地迎接原来的赵王歇,把他送回赵国。赵王因而立陈余为代王。
这时,汉王回军平定了三秦地区。
项羽听说汉王已经全部兼并了关中地区,齐国、赵围也反叛他,大为愤怒。于是封原先的吴令郑昌为韩王,让他去抵抗汉军。命令萧公角等人进攻彭越。彭越击败了萧公角等人。
汉王派张良攻取韩地,于是给项羽送信说“汉王有失职守,只想得到关中地区,如果能履行原来的盟约让我做关中王就停止进攻,绝不会继续向东。”又把齐国和梁国反叛的书信送给项王说:“齐国想和赵国联合起来灭掉楚国。”楚国因此放弃向西攻打汉王的意图,而是向北攻打齐国。向九江王黥布征调兵员。黥布托病不肯前往,只派部将率领几千人前往。项王从此怨恨黥布。
汉王二年冬天,项羽就向北打到城阳,田荣也率军前来会战。田荣没能打胜,逃到平原,平原人把他杀了。于是向北烧毁夷平了齐国的城池房屋,将投降的田荣的兵卒全部活埋,俘虏齐国的老弱的妇女。攻打齐国直至北海,所到之处大都被摧残毁灭,齐国人聚集到一起反叛楚国。此时田荣的弟弟田横收集齐国散亡的士卒,共得到几万人,在城阳反抗楚军。项王因而停留在城阳,连续交战,未能攻下阳城。
春天,汉王统率五路诸侯的军队,共五十六万人,向东讨伐楚国。项王听说后,就命令部将继续攻打齐国,自己亲率三万精兵向南从鲁地穿过胡陵。四月,汉军都已攻进彭城,收取财宝和美女,每天设置酒宴大会宾朋。项王于是向西从萧地,在清晨向东进攻汉军,来到彭城,中午时分大败汉军。汉军都逃跑了,相继掉进谷水、泗水,楚军杀死汉军士卒十几万人。汉军的士卒向南逃进山区,楚军又一直追击到灵壁东面的睢水边上。汉军退却,被楚军挤逼到河边,许多人被杀死,汉军十几万士卒全部掉进睢水,睢水因此被堵而无法流通。楚军把汉王包围了三层。此时从西北方向刮起大风,狂风折断树木、掀起房屋、扬起沙石,白天被刮得天昏地暗,狂风迎面袭击楚军。楚军大为混乱,包围圈破散,这样汉王才得以与几十个骑兵逃脱离去。汉王想经过沛县,带上家室迁往西方。楚军也派人追到沛县,获取了汉王的家人。家人全都逃亡,没能与汉王相见。
汉王在路上碰到了孝惠帝和鲁元公主,于是把他们载入车中行进。楚国骑兵追击汉王,汉王情急之下,把孝惠帝和鲁元公主推下车子,滕公每次都下去把他们载上车来。这样连续三次。滕公说:“虽然情况紧急车跑不快,但怎么能抛弃他们呢?”这样终于逃脱。又寻找太公、吕后,没能遇到。审食其跟随太公、吕后走小路寻找汉王,反而碰上了楚军。楚军于是把他们抓回去,向项王报告,项王于是把他们留在军中。
此时吕后的哥哥周吕侯为汉王率领部队驻扎在下邑,汉王抄小路去投奔他,渐渐收聚起他的士卒。到达荥阳,各路败军都来相会。
萧何也发动关中地区的老弱和未成年的男子全都来荣阳助战,汉军重新振作。楚军从彭城出发,不断乘胜追击汉军,与汉军在荣阳南部的京邑、索邑之间展开大战,汉军打败楚军,楚军因此不能越过荣阳向西进攻。
汉王四年,项王进兵包围成皋。汉王逃走,只与滕公从成皋北门出城,渡过黄河逃往修武,来到张:耳、韩信的军中。诸将也陆续逃出成皋,追随汉王。楚军于是攻克成皋。楚军想向西进攻,汉王派兵到巩县阻止楚军,使他们无法西进。这时候,彭越渡过黄河,在东阿攻击楚军,杀死楚国将军薛公。项王于是亲自东进攻击彭越的军队。
汉王得到了淮阴侯的军队,准备渡过黄河向南。郑忠劝说汉王,这才作罢,坚守河内。
派刘贾率兵帮助彭越,焚烧了楚囤积聚的物资。项王向东打败了刘贾,赶走彭越。汉王就率军渡过黄河,重新收复成皋。在广武驻扎军队,取放仓的粮食供应军队。
项王平定东海后又向西进兵,和汉军都在广武驻扎,两军相持了好几个月。
在这个时候,彭越多次在粱地反叛,截断楚圉的粮食供应。项王对此十分忧虑,干是制造了一个很高的砧板,把太公放在上面,告诉汉王说:“如今你要是不赶快投降,我就把太公煮了。”汉王说:“我和项羽一起:比面受命于楚怀王,说‘相约结为兄弟’,我的父亲就是你的父亲。如果你一定要烹杀你的父亲,就请你也分给我一杯肉汤。”项壬人怒,要杀死太公。项伯说:“天下事还不可预料,再说争夺天下的人不会顾及家人,即使杀了太公也没什么用,只会增加灾祸。”项王听从了,他的意见。
楚、汉两军相持了很长时间还没有决出胜负,壮年男子苦于常年征战,老弱之人疲于水陆运输。项王对汉王说:“天下好几年不得安宁,只因我们两人罢了,希望与汉王挑战决一雌雄,不要让天下的百姓白白受苦。”汉王笑着推辞说:“我宁愿斗智,不愿意斗力。”项王命令壮士出阵挑战。汉军中有位擅长骑射的人名叫楼烦,楚军挑战了好几个回合,楼烦全都把他们射死了。项王大怒,便亲臼披上盔甲、手持大戟挑战。楼烦想射项王,项王瞪着眼睛大声叱责,楼烦不敢正视,手中不敢放箭,就逃回了营垒,再也不敢出来。汉王派人私下打听,才知道是项王。汉王大惊。
于是项王就靠近汉王在广武的两军阵前对话。
汉王数落项王,项王大怒,想跟汉王决一死战。
汉王不答应,项王暗伏弓箭手射中了汉王。汉王受伤,逃进城皋。
项王听说淮阴侯已经攻下河北,打败了齐国和赵国,而且准备进攻楚国,于是派遣龙且前去迎击。淮阴侯与龙且作战,骑将灌婴进击,大破楚军,杀死了龙且。韩信因而自立为齐王。项王听说龙且兵败,便很惊恐,派盱台人武涉前去游说淮阴侯。淮阴侯不听。此时,彭越再次反叛,攻下梁地,断绝了楚国的军粮。
项王于是对海春侯大司马曹咎等人说:“谨慎地守住成皋,即使楚军想挑战,千万不要跟他们作战,只要不让汉军东进就行了。我十五天之内一定要诛杀彭越,平定梁地,再回来跟将军们会合。”于是向东进军攻打外黄和陈留。
外黄攻打不下。过了几天,守军已经投降,项王愤怒,命令城中年龄在十五岁以上的男子全部到城东去,准备活埋他们。外黄县令舍人的儿子才十三岁,前去劝说项王道:“彭越强行劫持外黄人,外黄人很害怕,所以才暂时向他投降,期待着大王的到来。大王来了,又要把他们垒部活埋,这样老百姓怎么会归附您呢?从这里向东,梁地的十多座城池都会害怕,再也没人肯投降您了。”项王认为他说得不错,于是赦免了那些本当活埋的外黄人。
向东直到睢阳,听说此事的人全都争着归附项王。
汉军果然多次向楚军挑战,楚军坚守不出。汉王派人连续五六天侮辱楚军,大司马被激怒,率军渡过汜水。士卒刚渡到一半时,汉军发起进攻,大败楚军,尽数争夺了楚国的财物。大司马曹咎、长史董翳、塞王司马欣都在汜水岸边自杀。大司马曹咎,原来是蕲县的狱掾,长史司马欣也是以前的栎阳狱吏,两人都曾有德于项粱,所以项王很信任他们。此时项王正在睢阳,听说海春侯兵败,就率兵回还。
汉军正在荣阳东面围攻钟离昧,项王到了后,汉军畏惧楚军,全都逃进了险峻的山中。
这时,汉王兵势很盛,粮食充足,而项王的军队却疲惫不堪,粮食也快吃光了。汉王派遣陆贾去劝说项王,请他放了太公,项王不答应。汉王又派侯公去劝说项王,项王这才与汉王订约,把天下从中间分成两半。割让鸿沟以西的土地归汉,鸿沟以东的地区归楚。项王同意了这个方案。随即归还了汉王的父母妻子。
军中都高呼万岁。汉王于是封侯公为平国君。
侯公却躲起来不肯见汉王。汉王说:“这是天下有名的辩士,所到之处可以倾国,所以才封给他平国君的称号。”项王接受盟约以后,就退阵引兵东归。
汉王也打算西归。张良、陈平对他说:“汉已拥有大半个天下,诸侯也都归附于汉。楚兵疲敝,粮食已经断绝,这正是上天灭亡楚国的时机啊,不如趁此机会消灭它。现在放过楚军不去攻打,这就是‘养虎给自己留下祸患’啊!”汉王听取了他们的意见。
汉王五年,汉王追击项王到阳夏南面,停止进军,与淮阴侯韩信、建成侯彭越约好时间,共同进攻楚军。到达固陵,韩信、彭越的军队却都没前来会合。楚军攻打汉军,大败汉军。
汉王再度逃同营垒,深挖壕沟独自坚守。汉王对张良蜕:“诸侯不遵守盟约,怎么办呢?”张良答道:“楚军将要被消灭了,可韩信、彭越还没有得到茸地,自然不会来的。君王如果能跟他们共分天下,他们马上就可以到达。如果不能,那么天下事就难以预料了。君王如果能把从陈县以东直至海滨的地区,全部封给韩信;把睢阳以北直到谷城的土地,划给彭越,让他们各自对楚军作战,那么楚国就很容易被打败了。”汉王说:“很好。”于是就派使者去对韩信、彭越说:“你们合力攻打楚国,楚国被消灭后,自陈县以东到海滨的土地划给齐王,从睢阳以北至谷城的地盘给彭相同。”使者到达后,韩信、彭越都回报说:“请求现在就攻打楚军。”韩信于是从齐国前往。刘贾的军队从寿春也一同进兵,屠戮了城父邑民众,到达垓下。大司马周殷背叛楚国,以舒城之兵屠戮了六地,发动九江的军队,跟随刘贾、彭越在垓下会合,进逼项王。
项王在垓下筑壁垒驻扎军队,兵员短缺,粮食已尽,汉军和诸侯的军队把垓下围了好几重。夜里听到汉军四面都唱起了楚地的民歌,项王于是大惊道:“汉军难道把楚国都占领了?为什么有这么多楚国人呢!”项王就在夜间起来,在帐中饮洒。有个名叫虞姬的美人,经常得到项王的宠幸而跟随在他身边;还有一匹名叫骓的骏马,项王经常骑着它四处征战。于是项王便慷慨悲歌,自己作诗道:“力拔山兮气盖世,时不利兮骓不逝。骓不逝兮可奈何,虞兮虞兮奈若何!”唱了好几遍,美人作诗应和。
项王哭着流下了几行热泪,左右的人都跟着哭泣,悲伤得抬不起头来。
于是项王跨上战马,麾下壮士骑马跟随他的有八百多人,趁夜突出重围,向南急驰而逃。天快亮的时候,汉军才发觉,汉王命令骑将灌婴带领五干骑兵追击他们。项王渡过淮河,能够跟上的骑兵只有一百多人了。项王来到阴陵迷失了道路,问一位耕田的老翁,老翁骗他说:“向左。”项王向左,结果陷进大沼泽地里。因此汉军追上了他。项王于是又引兵向东,来到东城,身边只剩下二十八个骑兵。汉军骑兵在后面追赶的有几千人。项壬自己估计不能逃脱,对他的骑兵说:“我起兵至今已有八年了,身经七十多次战斗,阻挡我的都被我攻破消灭,跟我交战的都被我征服,从未失败过。于是称霸而拥有天下。可如今竟被困在这里,这是上天要灭亡我,并不是我作战的过失造成的。今天必定要决一死战,我希望为各位痛快决战,一定要连胜三次,让各位突出重围,斩杀敌将,砍断敌军军旗,好让各位知道是上天要灭亡我,不是我作战的过失造成的。”于是将骑兵分成四队,分别向四个方向突围。汉军把他们包围了好儿层。项王对他的骑兵说:“我为你杀掉一名汉军将领。”他命令骑兵向四方奔驰而下,约定到山的东边分三处会合。于是项王大声呼喊着奔驰而下,汉军纷纷后退,于是斩杀了一名汉将。当时,赤泉侯杨喜为骑兵将领,追击项王,项王瞪着眼睛向他大吼,赤泉侯杨喜连人带马都受了惊吓,躲避出好几里地。项王与他的骑兵会合成三处。汉军不知道项王在哪里,于是也兵分三路,重新包围了楚军。项王就奔驰到汉军中,义斩杀了汉军的一名都尉,杀死了几十个汉军骑兵,重新聚集起他的骑兵,只损失了两名骑兵。于是对他的骑兵们说:“怎么样?”骑兵们都佩服地说:“确实像大王说的那样。”于是项王就想向东渡过乌江。乌江亭长划着船前来等候,对项王说:“江东地方虽小,但也有方圆千里,民众有几十万,也足以称王了。我希望大王赶快渡江。现在只有我有船,即使汉军来了,也无法渡江。”项王笑道:“上天要灭我,我还渡什么江呢!况且我项籍带者八千名江东子弟渡江西进,如今却没有一个人能够回来,即使江东父老兄弟可怜我而拥立我为王,我又有什么面目去见他们呢?即使他们不说什么,我项籍难道不内心惭愧吗?”于是对亭长说:“我知道您是一位长者。我骑这匹马已经五年了,所向无敌,曾经日行千里,我不忍心杀掉它,就把它赏赐给您吧。”于是命令骑兵们部下马步行,手持短兵器与汉军接战。项羽独自一人就杀死了几百名汉军士兵。
项王身上也有十几处伤,回头看见汉军中的司马吕马童,说:“你不是我的敌人吗?”吕马童面对项王,指给王翳说:“他就是项王。”项王就说:“我听说汉王为求购我的人头出价千金,封赏万户,我把这个好处送给你吧。”于是自刎而死。王翳割取了项羽的头颅,其余的汉军骑兵扯争抢项羽的尸体,互相残杀的有几十人。最后,郎中骑杨喜、骑司马吕马童、郎中吕胜、杨武各得到项羽的一部分尸身,五个人把所得的尸身合在一起,正好是项羽的全身。
于是把悬赏的封地分成五份,封吕马童为中水侯,封王翳为杜衍侯,封杨喜为赤泉侯,封杨武为吴防侯,封吕胜为涅阳侯。