项羽看时机成熟,下令第二天拂晓从西向东进攻汉军。奇袭使战局超乎寻常的顺利,3万人打败了56万人,汉军溃败,被杀十余万人。随后项羽率军追击,汉军则一路溃逃,被楚军挤压,“汉卒十余万人皆入睢水,睢水为之不流”。刘邦本人也差点被擒。刘邦收拾败兵残将,一路西逃,“至荥阳,诸败军皆会”,“萧何亦发关中老弱未傅悉诣荥阳,复大振”。楚军自彭城追来,与汉军在古荥南边京水与索须河之间(约在今郑州大学新校区到连霍高速一带)交战,汉军击败了楚军,于是双方在荥阳故城下形成僵持。秦并六国,曾把荥阳当成东方门户;刘邦在彭城战败,部下不约而同都逃到荥阳,足以说明在他们的心目中,荥阳仍是东进与项羽作战的门户。
荥阳是天下水运枢纽,在荥阳作战,双方都便于转运粮草。萧何从关中筹集的军粮,通过黄河,可以转漕荥阳;而项羽在彭城筹集的军粮,也可通过鸿沟的分支睢水、获水转漕荥阳。双方能在荥阳一带僵持四年之久,正是因为都得到了漕运 支持,各自大后方的军粮,通过水路源源不断地运到前线。楚汉各有数十万人马,如果没有足够的水运能力,双方不可能在荥阳僵持四年之久。在荥阳形成的僵局,只有一种可能被打破:谁的后勤供应链断裂,谁就将支撑不下去。
敖仓位于鸿沟和济水(在这段是一个河道)从黄河分流的地方。秦朝时期,济水流域和江淮之间,是中国最重要的产粮区,秦朝将这些地区的粮食大量漕运到关中。由济水和鸿沟运来的粮食,进入黄河时要换船运输,秦人就建立了这个敖仓储粮。这个粮仓储量惊人,直到楚汉相争时,仓中的粮食仍不可计数。敖仓是因为建在敖山上而得名。《水经注》说:“济水又东经敖仓北,其山上有城,即仲丁所迁,秦置敖仓其中,故曰敖仓。”其位置,在广武山北,今天已是黄河河道。
刘邦从彭城败退到荥阳时,修了条甬道,从城内越过广武山,直达黄河边的敖仓,用这个办法获得粮食。靠着敖仓的粮食,刘邦与项羽对峙了一年多。项羽看出门道后,频频派人绕道侵夺甬道,断了刘邦的粮食供应,不久刘邦就支持不下去,派纪信扮成自己,谎称要出降,引导楚军都去东门观看,他带着几十个人从西门仓皇逃走。后来刘邦又坚守成皋,项羽进兵攻击,打得刘邦出北门过黄河逃到修武。此时荥阳、成皋、敖仓,尽入项羽囊中。
奇怪的是,项羽似乎不太看重敖仓,他竟然没派人固守这么重要的地方。无论如何,这都是项羽的一大失误,不过也说明一点,尽管长期在荥阳作战,项羽的部队并不缺粮,他身后的鸿沟水系,大约为他运来了充足的军粮。不过,项羽的麻烦在于两线作战。刘邦身后的关中和漕运很稳定,项羽身后的彭城和漕运却屡屡被攻击。占领成皋后,彭越频频在项羽的后方捣乱,项羽只好“东击破之,走彭越”。刘邦乘机引兵南渡黄河,“复取成皋,军广武”,并再次占据了敖仓。与项羽再度形成相持。
可以说,荥阳之战,帮刘邦最大的是彭越。此人“数反梁地,绝楚粮食”,令项羽十分头疼,他既无奈深沟壁垒、坚守不战的刘邦,又杀不绝后方捣乱的彭越,两线作战,渐感吃力。他烹刘邦父亲、约刘邦单挑的举动,都是在这个时期,这些故事,透露着楚霸王的万般无奈。楚汉相持不下,双方其实都在苦苦支撑,“丁壮苦军旅,老弱罢(疲)转漕”。但刘邦占据了敖仓,后方通过漕运又安然无忧;而项羽后方的运粮船、粮仓,频频被彭越、刘贾抢掠烧毁。于是,项羽一方先坚持不下去。“是时,汉兵盛食多,项王兵罢食绝。”
刘邦乘机派人前去游说,与项羽约定“中分天下”,“割鸿沟以西者为汉,鸿沟而东者为楚。” 定约后,项羽引兵东归。刘邦本来也想引兵西归,张良、陈平劝他:“汉有天下太半,而诸侯皆附之。楚兵罢食尽,此天亡楚之时也,不如因其机而遂取之。今释弗击,此所谓'养虎自遗患'也。”于是刘邦率兵东进,会合韩信、英布等,将项羽围于垓下。