彭城之战,刘邦的军队丧失殆尽,他只带领少数亲信,逃出项羽的包围。刘邦的内兄吕泽,当时正领兵驻扎在下邑(今安徽砀山县)接应,刘邦就近投到那里。刘邦在这里陆续收集了一些从彭城逃来的溃散士兵,进行了一些初步的整顿后,又移军砀县(今河南夏邑县东)。
项羽在彭城击败刘邦后,为了整顿彭城的秩序,建立被刘邦破坏的有关组织机构,并未再派主力穷追刘邦的残部,所以刘邦得以从容撤退。他从砀县经过虞县(今河南虞城县北),徐徐退至荥阳(今河南荥阳县)。
刘邦到下邑时,曾扶着马鞍对张良说:“现在看来只有退到关内据守,关东的地方只好放弃了。你看把关东的地方让给谁,方可与我们共同击败项羽?”张良说:“九江王英布,是项羽的先锋,但这次项羽东击齐国,他拒绝亲自带兵参加,与项羽有了矛盾;彭越和齐王田荣,都和项羽是死对头,我们要给予支持。你的部下只有韩信可独当一面,为你办大事。你如果能把关东之地让给这三个人占领,项羽就没有什么可怕了。”刘邦听了张良的意见,后来极力劝说英布反项羽,拉拢彭越,让韩信率大军击赵、燕、齐,重用这三个人的力量,终于转败为胜。
荥阳是通往关中的咽喉之地,依山傍水,军事地位十分重要。刘邦退到荥阳后。决定在这里设防拒守,作为关外的防线,以抵抗项羽向关中的进军。留守关中的萧何,听到刘邦败退至荥阳,就把新的兵员和物资送到荥阳,以补充刘邦的兵力。刘邦这时刚战败,人员和物资都极度缺乏,萧何把关中二十三岁以上、五十六岁以下的老弱,都征为兵员,派到前线去了,刘邦还是一再派人追要新的兵员和物资。萧何感到无法再应付了,这时一位姓鲍的儒生看出了问题,就对萧何说:“刘邦现在战败,之所以向你一再追索兵员和物资,是怀疑你不全力支持他。你为求得刘邦的信任,我劝你把自己的亲属子弟中能当兵打仗的人,都送到荥阳前线,刘邦就不会怀疑你对他的忠心了。”萧何听从他的意见,把自己的子弟都送往前线。刘邦一见萧何家的人都来到前线,就不再对萧何起疑心,因而也就没有再派人向萧何索要人员和物资了。
在彭城战败的诸将也都陆续带着自己的残兵败卒,赶到荥阳与刘邦会合,韩信也收集了一部分散兵来到荥阳,再加上萧何从关中新支援的人马,刘邦的军队开始在荥阳又恢复了战斗力。
当刘邦的军队在荥阳经过整顿,已经恢复了战斗力时,项羽率主力军才到达荥阳,因而失去了乘胜一举消灭刘邦的良机。刘邦在荥阳南面的京、索间,布防迎战项羽军的进攻,刘邦的军队取得胜利,军队的士气受到鼓舞,从而阻止了项羽的西进。
项羽来进攻的军队中有相当数量的骑兵,他们对刘邦的阵地威胁很大。刘邦想组织一支专门的骑兵来对付他们。曾经当过秦朝骑士的李必和骆申,对骑兵的战术很熟习,这时在刘邦部下当校尉,大家推举他们为这支骑兵的骑将。刘邦认为很合适,把他们叫来准备任命,李必和骆申对刘邦说:“我们都在秦时当过骑士,恐怕得不到军队的信任和支持。希望你在亲信的人中选一个人为骑将,我们可以辅助他。”灌婴是贩布的出身,很早就参加了刘邦的起义军,他虽然很年轻,但善骑射,屡次立战功。刘邦于是任命灌婴为骑将,李必和骆申为左右校尉,组建了一支骑兵,在荥阳东大破项羽的骑兵。后来这支骑兵又深入敌后,机动灵活地一再切断项羽军的粮道,扰乱项羽的后方,为刘邦击败项羽立下了大功。
在荥阳北部山上,靠近黄河边,有秦朝留下的关东最大粮仓——敖仓,这时仍存放着大批粮食,它成为刘邦在荥阳一带守军的粮食供应地。为了保住这个粮仓,使粮食能源源不断地运到荥阳前线,支援荥阳的守军,刘邦在荥阳和敖仓之间修筑了一条甬道,以防止项羽军的攻击,确保荥阳的粮食供应。
刘邦在荥阳的守军,主要靠取敖仓的粮食来支持。刘邦虽然筑甬道保护与敖仓间的交通,但由于项羽军的一再进攻,甬道被切断,刘邦在荥阳的守军因粮食供应发生困难,难以再坚持下去。刘邦觉得守住荥阳已无望,被迫向项羽提出停战讲和,条件是以荥阳为界,荥阳以西归刘邦,荥阳以东归项羽。
这时项羽的军队远离后方,供应也很困难,再加上军队连续作战,将士都很疲劳,所以项羽想暂时接受刘邦的条件,以求得休整的机会。但是范增坚决反对,他认为:“不趁刘邦现在陷入困境之机将他消灭,留下大患,以后必然会后悔莫及。”这时陈平还未使用反间计,项羽仍很尊重范增的意见,所以没有同意刘邦的议和条件,项羽继续急攻荥阳。
刘邦在荥阳的处境越来越危险,他的部下纪信怕荥阳失守后刘邦被俘,就向他建议说:“现在形势很危急,荥阳难于再守住。请你让我装扮成你的样子,好去欺骗项羽的军队,你可乘机从小道突围出去。”
陈平在夜里组织了二千女子,让他们都穿上军装,从荥阳的东门出城,假装成是要突围的军队。项羽的军队以为刘邦要突围逃走,就从四面来围攻这二千娘子军。这时纪信打扮成刘邦的样子,坐着刘邦专用的马车,以黄绸缎为车盖,车的左边还树立了一个象征权力的牦牛尾巴,对项羽的军队大声说:“城中的粮食吃完了,我是刘邦,要向项羽投降。”项羽的将士不辨刘邦的真伪,听说是刘邦出城投降了,都高兴得呼喊万岁,拥到东门外观看刘邦投降的场面。刘邦趁项羽的军队都跑到东门外欢呼胜利,西门的项羽守军松懈之机,率领数十骑从西门偷偷地跑出来,在项羽军队神不知鬼不觉的情况下,逃到了刘邦的另一个据点成皋。
项羽的士兵把要投降的假刘邦带到项羽那里,项羽一看才知道不是刘邦,上当受骗了。项羽质问纪信:“刘邦在哪儿?”纪信知道这时刘邦已逃出荥阳,就如实地回答项羽说:“刘邦早已逃出了荥阳。”项羽恨死了这个假刘邦,就把纪信活活烧死了。
刘邦逃离荥阳时,命令周苛、枞公和魏王豹等人率残兵继续死守荥阳。刘邦走后,周苛、枞公认为:“魏王豹在彭城之战刘邦失败后,曾投降了项羽,在现在这样困难的情况下,恐他再背叛刘邦,不可信任。”因而两个人决定,杀了魏王豹,以除后患。
刘邦逃走后,周苛、枞公当然更难以守住荥阳,不久就被项羽攻破,周苛和枞公被俘。项羽认为他们在十分困难的情况下,仍为刘邦死守荥阳,很佩服他们的这种精神。项羽很想收买他们为自己出力,就对周苛说:“你如果肯投降,我就任命你为上将军,封三万户。”周苛是刘邦的亲信,他不肯投降项羽,反而骂他说:“你如果不向刘邦投降,也会当刘邦的俘虏。你不是刘邦的对手,我怎么会投降你呢?”项羽见周苛不肯投降,就煮杀了周苛,杀了枞公。
荥阳失守,是刘邦彭城之败后,再一次大的失利。荥阳被项羽占领后,刘邦设置的荥阳,成皋防线,破了一大缺口,函谷关就这样暴露在项羽的兵锋下,危及关中的安全。
这时再次出现了有利于项羽的军事形势,他或者可以乘胜再集中主力围攻成皋,全部粉碎刘邦的荥阳、成皋防线,然后再进攻关中;或者留少量的军队牵制成皋的守敌,而集中主力西攻函谷关,迫使刘邦的关中后方发生震动。
可是项羽并未充分利用占领荥阳后的这一有利形势,在军事上采取主动的行动。而是滞留在荥阳,受刘邦军事行动的牵制,被动地采取了一些行动,因而未能扩大攻下荥阳的战果。