楚汉两军,前后相持三年,主要的阵地始终在京、索、荥阳、成皋之间。
拿近代的话来说,这差不多是阵地战。相当于今日壕沟的是城墙与壁,壁是土墙。在野外的阵地中,楚汉双方均筑有这样的壁,作为掩护。汉军的前锋是在荥阳。后方输送全靠渭河、黄河,以敖仓为终点,在敖仓与荥阳之间,有类似交通壕的设置,叫做甬道,也就是狭长的双重的壁。今日突破阵地,是用坦克车来冲锋;在古代,非得敌人也出壁来应战才有交锋的可能。因此,需要挑战、骂阵等等。但到了交锋的时候,也有一种陷阵的利器,那便是用马拖的兵车。汉军之中最擅长使用兵车的是夏侯婴。他每次作战,均能“以兵车趣攻战疾”,所谓趣攻,所谓战疾,都含有“冲”的意思。两军相持都能维持甚久,原因是交锋的机会很少,平常都是用弓弩保持自己的阵脚,以补助土壁之不足。
在京县与索县之间的楚汉两军的阵地,很显明,汉军的一方占有地形上的优势。索县之正西有广武山,西北有虎牢关,西南有嵩山。在索县与虎牢之间,又有汜水。更西,是巩县,已经到了很高的黄土层。凡是走过陇海铁路的人,未有不惊奇于这汜水车站以西的一层比一层高的黄土层。在这里,楚军来攻汉军,便是仰攻。就交通的情形来说,汉军所占的地势,也较为优良。从栎阳到敖仓有黄河接着渭河,两岸均为自己或友军的领域,不受任何威胁。并且以水道来运输粮食与补充兵员,顺流而下,也远胜当时陆地上的车运。因此,一败涂地的汉军,退到索县一带便能稳住,长胜的楚军竟然费了几年的力量,而不曾能越过巩县。
除了地理的因素之外,汉军之所以能够与楚军相持于此,还有政治上、战略上更重要的原因。当刘邦彭城突围,狼狈西奔的时候,荥阳(荥泽)的守军虽多,未必能抵抗得了项羽的主力。是倚靠辩士萧何疏通了九江王英布,突然在安徽西南,宣布背楚附汉,才牵制了大量的楚军。虽则英布终于为项羽所击破,丢掉了九江郡的地盘,但刘邦已能从从容容,布置妥当新的阵地。
在后方,他又除去了心腹之患,那死守废丘的章邯。废丘城,他引水来灌,城中的军民投降,章邯自杀。为了安定后方的人心,巩固后方的防务,于是立刘盈为太子(即后来的汉惠帝)。太子与萧何留守栎阳,令诸侯的世子,凡是在关中的都来栎阳,为太子的侍卫(实际上是藉以确保诸侯忠顺的人质)。一切的庶政与军国大事,均责成萧何:制法令,立宗庙,筑城邑,计户口,以及转粮给军,补充兵员。能于事先奏明刘邦的,先奏后行;时间上不允许先奏的,准许萧何先行后奏。前方后方,因此,保有了密切的合作。后方组织的坚固,足以保证前方的胜利。在敌人的后方,刘邦又发展游击的工作。虽则英布已经失败,只身来到汉王的军营,但是他仍有一部分的兵力留在九江郡的地域。刘邦帮助他派人去召集这些散兵,果然又集合了数千之众。刘邦同时分了一些汉兵,去增大九江兵的声势。
英布以外,奉刘邦之命担任游击的又有一个彭越。彭越原是巨野泽的水寇,对于山东省西南部,河南省东北部,与江苏省西北部的边区最为熟悉。在汉王东袭彭城的时候,他已经聚集了三万余人,占有了十余城邑,在外黄加入刘邦的大军。刘邦既败,他收兵退处于黄河北岸,滑县附近。此后他就以定陶、巨野一带为根据地,“往来为汉游兵,击楚,绝其后粮于梁地”,竭力破坏彭城与荥阳之间的交通与输运。
萧何采摭秦法,重新制定律令制度,为《九章律》。
反之,在项羽的一方也未尝没有对付刘邦的对策。项羽在彭城之战的明日,就设法使得附和刘邦的诸侯,一一背汉归楚。塞王司马欣与翟王董翳逃到项羽的军中,帮助项羽来围攻荥阳。西魏王魏豹,则假托回国省亲,立刻断绝了黄河的渡口,与刘邦脱离关系。这对于全恃水道运输的刘邦造成了很大的威胁,因为黄河的北岸有一段是在西魏国的境界;而且倘若西魏的兵,一旦由临晋津渡河西向,栎阳与全部的关中,便遭遇极大危险。
刘邦认为这西魏叛变必须迅速解决。他派遣辩士,辩士失败。他只得派遣军队,交由韩信率领。韩信设疑兵于临晋,突从夏阳渡河而一举占领安邑,俘虏魏豹。魏豹再度降汉,又成了汉军守荥阳的将领之一。但是西魏国的土地不能再交给魏豹,刘邦他不想另封其他的人。他设立河东、太原、上党三郡,把这三郡都一概划入自己的汉国。这是刘邦的一贯政策,他在甘肃与陕西,已经设置了陇西、北地、上郡、渭南、河内、中地诸郡。以郡县代替封建,是刘邦增厚实力的秘诀;因此,他能够脚踏实地,打下一处,便据有一处(其后灭了项羽,大封功臣同姓,也只是实行郡国制度,于郡县的基础之上,加一层封建而已,以十五个郡直属中央,余下的才分封各国)。
韩信平了西魏之后,在上党郡的阏与(和顺县西北),遭遇了赵代二国的援军。代王陈余,本是最先反楚的一人,他逐走项羽所封的常山王张耳,迎归赵王歇,而自封代王;他与刘邦理应站在同一条战线。无奈刘邦收容了张耳,因此陈余又不得不与刘邦为敌。结果,在阏与,陈余的大将夏说为韩信所斩杀。
韩信随即由娘子关,东出井陉。陈余自恃兵多,不肯听从李左车的计策,以奇兵截断韩信的粮道,以正兵堵住井陉的关口。他专要等待韩信的部队走出娘子关,正式交战,一决雌雄。到了正式交战的时候,韩信先是诈败,败退到预先布置于绵蔓水河边的一万人的营中,就突然作坚强的抵抗;韩信在当天的黎明之前,又已经派出两千人埋伏于赵军营垒附近的山上,这两千人此时都走下山来,袭取赵军的空营,拔去陈余的军旗,插上汉军的军旗。陈余及其部下,向前不能击破韩信的水上军,退后又回不了自己的营垒,军心立刻动摇。陈余被追斩于泜水之上,赵王歇成为俘虏。汉军的声势,恢复了东袭彭城时的浩大。远在今日北京的燕王臧荼,也向汉军输诚。这是汉王三年十月至十二月的事(这时候仍用秦的历法,以十月为岁首,三年十月紧接二年的闰九月,东袭彭城是在二年四月,战败是在五月)。
但是项羽仍不为黄河北岸方面的局势所摇动,仍旧坚持着在荥阳城下的阵地战。他的战略,是断绝汉军与敖仓之间的甬道,使得汉军因乏食而屈服。这战略相当收效。刘邦数次讲和,愿意割荥阳以西为汉,荥阳以东为楚,项羽不许。刘邦又改用陈平的计策,以金钱收买项羽的左右,离间他的君臣。范增因见疑而辞职,死在回居巢县家乡的中途,彭城附近。项羽继续围攻荥阳,刘邦继续死守。
这时候敖仓刘邦的甬道常遭断绝,荥阳是否尚有死守的价值,或有无守的可能,开始值得考虑。刘邦决定,他自己先离开荥阳。在某一天的夜里,他命令纪信伪装自己,夹在二千名女子之中,出东门诈降,引起了楚军大众,一齐聚集东门来观看女子,他就带了几十个骑兵,出西门遁出,回到函谷关内,征调新兵。
新兵征调齐集,他不出函谷,而忽然改出武关。项羽只得引兵南向,他却坚守宛县,不肯交战,暗中命令彭越,利用这个时期,在北方骚扰徐州附近的下邳,大破楚军。项羽回师去击彭越,刘邦就跟踪追击,驻军成皋。项羽只得又丢开彭越,赶来对付刘邦,第一步以全力攻下荥阳,第二步进围成皋。刘邦自知不敌,逃出成皋,北渡黄河,到了修武。
在修武,他诈称汉王的使者,在夜里骑马走进韩信与张耳的军中,趁着韩张二人尚在酣睡,夺去他们的兵符,更换各单位的军官。他于是又直接掌握了若干军队,声势复振,布置兵力在黄河北岸,为南岸的声援。同时命令张耳回国,多调赵兵助战;又命令韩信袭齐,攻取山东。此外,派了刘贾,以两万人渡白马津,到定陶帮助彭越。彭越随即攻占陈留、外黄、睢阳等十余县城。
在汉王四年的开始,项羽觉得阵地战不妨拖延,而敌人的游击队伍,不可不早日肃清。他决定以十五日的光阴,彻底解决彭越,令大司马曹咎谨守成皋,勿与汉军交锋。无奈曹咎忍受不了汉军的辱骂,终于在五六日后出城应战,渡兵汜水。楚军半渡,汉军反攻,楚军大败,曹咎自杀。汉军收复了成皋与荥阳,在荥阳的东边围住楚军的大将钟离昧。这消息传到了项羽那里,项羽刚刚击败彭越,取回陈留、睢阳等城,不得不中途放弃那消灭彭越的计划,回到荥阳的阵地来。
齐国的情形也发生变化。齐国的田氏,诚然是项羽的敌人,但已经入于休战的状态之下。刘邦一面派了韩信,去图谋齐国的土地,一面又派了辩士郦食其游说齐王田广,令他附汉反楚。田广听从了郦食其的游说。不料韩信又突然击破齐国驻扎在济南(历下)的军队。田广怒而烹杀郦食其,继而仓皇东奔,放弃临淄,在高密遇到项羽所派来的、由大将龙且所率领的援军。
龙且与韩信夹潍水而战,龙且在水东,韩信在水西。交战的前夜,韩信叫兵士用一万包的沙袋,塞住潍水的上游。交战开始,韩信引兵渡河,佯作不胜,退至水西。龙且引兵追击,半渡,韩信叫兵士提去上游的沙袋,于是楚军的大部分不能渡河。结果是:楚齐联军全军覆没。龙且被杀,田广被俘。韩信被刘邦封为齐王,齐国与彭越的游击区连成一片,从临沂与定陶两路威胁彭城。
项羽这才开始感觉恐慌。他派人去游说韩信,劝韩信中立于刘、项二人之间,三分天下;韩信不听。他又派人去疏通刘邦,说与其这样相持下去,徒苦百姓,何妨你我二人单枪独马,一决雌雄。在项羽的本意,无非表示厌倦战争,希望和解。因此,这誓不并立的,相持数年的两位英雄,又有了一次直接谈和机会。不料刘邦十分骄傲,根本拒绝了项羽的要求,利用谈和的机会,当面宣布项羽的十大罪状。项羽大怒,立刻以伏弩惩戒刘邦,刘邦胸上带箭,退入成皋。
不久,和约依然成立。楚汉两军,划定鸿沟为界,鸿沟所占的土地,在大体上是今日的贾鲁河。项羽也许认为双方已经可以暂时和平相处。张良认为这正是最后大决战的开始。