楚将昭睢得令,便带着五万楚军到了关前,将楚军分四组,每组一万,轮流攻打城关,五千楚军分两路包抄两侧山岭,五千楚军分三组轮流撞击三个城门。准备妥当,一声令下,五万楚军杀声震天,攻城楚军个个左手举盾,右手抓斧,猛剁猛击城墙,撞门的楚军不顾擂石滚木,一个倒下,一个补上,前仆后继,用大木猛撞城门。碰!碰!碰!城门越来越松了,碰!碰!碰!城墙越来越破烂,已经有小洞口了。城上秦军将领大叫:“快!快!快用石头、滚木砸城墙下和城门下的楚军,快把墙洞给我堵住”。
军士回答说:“将军!楚军已在城根和门边了,很难砸到他们呀!还有我们的擂石滚木越来越少,士兵越来越疲倦,气力不佳了”。这时,又有军士慌忙跑来说:“报!两路楚军已攻上两侧的山岭,把守水源的秦军将士已全部战死”。秦军守城副将说:“将军!眼看城关就守不住了,两侧山岭的楚军很快就会沿着水道攻进关来,再不走就会全军覆没了”。将军说:“人在关在,准备刀枪,与楚军拼了”。付将说:“楚军势大,何必白白送死呢!赶快引兵退走潼关,待大队秦军到来,再来收关不迟”。守关将领眼看关下楚军,后无援兵,只好痛苦大哭说:“将士听令!速开后门,全军退往潼关”。
碰!碰!碰!墙洞越来越多、越来越大了。碰!碰!碰!城门摇摇欲倒、终于被撞开了。昭睢一马当先,率着大队楚军杀进关内。仅仅三个小时,号称固若金汤的函谷关就被攻破了。楚军在这三个小时的攻城过程中,付出了八千将士的性命。秦军弃关而逃,被斩二千余名。各国联军随之相继入关。
楚怀王说:“为确保作战计划成功,兵分二路,魏、韩十万大军从这里北渡黄河,沿黄河而上至风陵,西渡黄河至秦东镇,一路从这沿着山川而上,二路大军于潼关、华阴(市)会合,直取渭南(市)”。其实,就在赵、燕和楚军两次攻打函谷关时,魏惠王就已私自暗中下令在本土的十万魏军分两路各五万,一路从河津(山西河津市)西渡黄河到韩城(陕西韩城市),结果在合阳(陕西合阳县)被秦军打得大败而回。另一路从风陵西渡黄河至秦东镇,也被早已埋伏在潼关的五万秦军打得大败而逃,死伤惨重。
正当楚怀王准备调兵遣将,大举进功时,忽见魏、韩、赵、燕四国使者送来奏本,原来是秦相张仪给魏、韩、赵、燕四国的书信。张仪给魏、韩的信说:“有秦在,才有魏、韩在,秦国要是被六国联军打垮,那么,魏、韩还能存在吗?秦国一垮,楚、齐的大军就会攻打魏、韩二国,那时,有谁能帮你们抵抗楚、齐的军队呢?楚之所以不能灭韩,齐之所以不敢伐魏,那是因为有秦在。现在魏、韩伙同楚、齐伐秦,实是在给自己掘坟墓。因此,不如秦、魏、韩三国讲和修好,这样,才能保证你们的安全。是不是这样,请大王仔细想想”。
张仪给赵、燕的信说:“我说赵、燕真是傻呆,秦国是虎狼,难道齐国就是羔羊。不知是秦国还是齐国经常侵略赵、燕二国,是秦国吗?不是,是齐国。赵、燕所要对付的军队是齐王的军队,现在,你们千里迢迢带兵来到这里为了什么?打胜了你们能把关中搬回去吗?不能,得地得利的是魏、韩,你们连军费也得不到补偿,谁给你们呀?难道魏、韩会割地赔偿给你们吗?无论是胜是败,你们只能是损兵折将,一个不留神,魏、齐两国的军队就会转过头来把你们吃掉。而秦国正好可以帮助你们牵制魏、齐的军队。因此,不如咱们罢兵言和,握手修好,这样,秦军就可以帮助你们攻打魏、齐,你们也就可以得到魏、齐的土地”。
魏、韩、赵、燕四国给了张仪这么一游说,也就都不想再打了,主张和秦国讲和。楚怀王说:“怎么刚刚破关就打退堂鼓,不想前进到潼关的可以带兵走人”。魏、韩、赵、燕四国又说,我等率军帮你们驻守函谷关,万一你们失利,我们也好接应们”。楚怀王说:“不必了!函谷关容纳不了那么多军队,你们既不想进,又不想走,那就在关外那片空阔地带驻扎”。楚怀王接着对齐王说:“楚将昭睢和司马淖滑率五万楚军先行,齐将田贲率五万齐军断后,留心沿途两旁山岭有秦军埋伏。另四万二千楚军和二万齐军留守函谷关”。
翌日早上,昭睢率五万楚军从函谷关向潼关开拔,五万楚军分五纵队,昭睢自坐中军,沿着函谷川前进,约行十来里,忽然听到轰、轰声起,谷川两旁山岭大石雷木纷纷滚下,堵截道路,楚军见状,大叫不好,急忙躲避。楚军队伍被雷石切为前后两段,只听前面两声鼓响,秦军从山背后两头杀出,秦将向寿横刀立马,立于谷川前面,昭睢、司马淖滑见状,方知中计,又不知秦军底细,不敢往前冲杀,正想往后退,又听后面鼓声响起,山岭上大队秦军往下杀出,企图截住退路,山上又有飞石滚木砸下,楚军不好列阵展开。昭睢对司马淖滑说,我到前面截住向寿大军,你带军士从后面杀出,快”!昭睢说完,率五千骑兵冲到前面截住向寿大军,司马淖滑则率五千骑兵冲杀后面秦军的堵截。
向寿对昭睢说:“昭将军!郑庄一别,无恙吗”?昭睢说:“还好”!向寿说:“今你已经被困,休想杀出此山谷,何不放下兵器,避免杀戳”。昭睢说:“休想!区区山谷,能困住我五万将士,你也未免太小看楚军了”。向寿说:“既然如此,今日你我各为其主,真的非要拼个你死我活不可”?昭睢说:“来吧”!说完,随拍马挺枪,直取向寿。向寿一见,也纵马挥刀,砍杀过来。这二人半斤对八两,势均力敌,两边军士击鼓助威,唤声如雷!两人斗了五十多回合,不分胜负。
只见昭睢越斗越勇,向寿也不气弱,乒乒乓乓,二人又斗了二十多回合。看得出楚将昭睢攻的多,招架的少了。向寿心里明白,昭睢枪法纯熟,变化多端,再缠斗下去,对自己不利,遂虚晃一刀,退回阵前。昭睢见状,也不追赶,随令将士后队改前队,前队掠阵,徐徐后退,不得惊慌。秦军正想掩杀,向寿挥手遏止,随对左右说:“昭睢临大变而不惊,楚军临大困而不乱,真是名将名军!我军人数未占优势,撕杀起来,难讨便宜,双方都得死伤惨重,就让他们退去”。
再说司马淖滑率五千骑兵冲杀后面秦军的堵截,秦军因人数没占优势、堵截不住,被司马淖滑率大队人马杀出,楚军也不恋战,急忙全部撤出后退,行至七、八里外,才见齐将田贲率着大军赶来接应。五万楚军受矢石雷木的袭击死伤近五千人。楚怀王闻报大怒,正准备组织第二次进攻,消灭谷川两旁山岭的秦军。忽然快马来报,秦惠文王派张仪前来议和。
楚怀王于函谷关上会见张仪说:“楚国和各国一样,同意议和,但秦国必须承担各国出军费用和楚、赵、燕三国死亡将士的抚恤金,并向楚军支付函谷关的赎城费”。张仪一一答应,并说等其回报秦王才能兑现。随后,张仪回见秦惠文王,将楚怀王开出的议和条件一一奏明,秦惠文王说:“向楚军支付赎城费,难道这楚怀王还想挣一大笔”?
张仪说:“大王!函谷关现在在楚怀王手里,很是不妙。若是楚怀王交给魏、韩或者占住不走,那可就糟了,到时秦军想东进河南可就难了,区区一城之费,大王可从魏、韩身上讨回来。大王可一面答应楚怀王的一切条件,将费用送去,暗中再加给楚怀王重重的一笔,另一面可集结重兵,待楚怀王率大军回去,各国军队散去,大王即可发兵,攻打魏、韩,狠狠地敲它一笔。这样,损失不就都拿回来了,还可以迫使魏、韩加入秦国的军事联盟,然后再发兵伐齐”。秦惠文王听了觉得有理,随令张仪备齐费用,打发六国联军。
这年冬十月,楚怀王和昭睢、司马淖滑率大军班师回楚都荆州,齐、魏、韩、赵、燕各国也都拿着秦国的赔偿金率军回去。翌年,公元前317年春(楚怀王十二年),秦惠文王即令大军攻打魏国韩城(市)、河津(市),大败魏军,斩杀魏军三万余,魏王割让韩城(市)与秦国议和并与秦国联合、与齐国对抗。这年三月份,秦惠文王又派大军经过魏国的地方去攻打韩国,双方战于修鱼(在今河南原阳县原武镇东),大败韩军于岸门,楚怀王本想发大军救援韩国,但因陈轸劝阻,便按兵不动,韩王兵败随向秦王割地求和。