山方向实施主攻;第一一一团第1营沿关内谷地前进,向长墙进攻,企图在主攻部队得手后两路夹击,攻占关前隘清军防御主阵地。法军主力在炮火掩护下,攻占东岭三座堡垒。并猛攻长墙。冯子材指挥所部顽强抵抗,一面商请驻于幕府的苏元春部前来接应,并通知王德榜部从侧后截击法军。在丢失三座堡垒的危急关头,冯子材大声疾呼:“法再入关,有何面目见粤民?何以生为?”守卫清军在冯子材的爱国情感鼓舞下,英勇抗击,誓与长墙共存亡,阻止了法军的前进。
下午4时许,苏元春率部赶到东岭参战,王德榜部也自油隘袭击法军,并一度切断了法军运送军火、粮食的交通线,牵制了法军预备队的增援,有力地配合了东岭的战斗,战斗呈胶着状态,入夜,清军进一步调整部署,由苏元春部协助冯子材守长墙,王孝祺部夺西岭,陈嘉部守东岭。冯子材还另调驻扣波的5营冯军前来抄袭法军左翼。次日晨,尼格里指挥法军在炮火掩护下,分三路再次发起攻击,沿东岭、西岭和中路谷地进攻关前隘阵地。冯子材传令各部将领:“有退者,无论何将遇何军,皆诛之”。经激战,法军接近长墙,冯子材持刀大呼,率先率领两个儿子跃出长墙,冲向法军。全军感奋,一齐出击,与其进行白刃格斗,战斗异常惨烈。
战至中午,终将中路法军击退。与此同时,陈嘉部、蒋宗汉部在东岭与法军展开了激烈争夺战,傍晚时分,王德榜在击溃敌之增援部队及消灭其运输队后,从关外夹击法军右侧后,配合东岭守军夺回被占堡垒。这时,王孝祺也已击退沿西岭进攻之敌,并由西岭包抄敌后,使其腹背受敌。法军三面被围,法军死伤近300人,后援断绝,弹药将尽,被迫败退,尼格里只得下令撤退,狼狈逃回文渊、谅山。冯子材抓紧有利战机,率部乘胜追击,于26日攻克文渊,29日攻克谅山,宣称毙法军近千名,重伤法军指挥官尼格里,后又将法军残部逐至郎甲以南。取得重大的胜利。
1885年3月30日,赫本哲放弃谅山的消息传到法国本土,法国总理茹费理内阁以306对149的票数否决了茹费里的“增拨军费案有先议权”提案。茹费理引咎辞职。然而茹刚一辞职法国就同意“应先前要求”给越南法军垫付五千万法郎“人们认为是法国战争计划的象征”表明法国丝毫也不打算停止战争。而在此役后清军已经精疲力尽,刘永福部“所存不足五百名……多方招集不足千人,战守两难,进退失据。”清朝财政方面,四川总督丁宝祯在1884年就拿不出供鲍军的十万两银,说“鲍超军需甚重,措办为难”,在英国调停下,李中堂和法国公使巴德诺在天津会谈,于6月9日签订了《中法天津条约》为结局。中法天津条约的主要内容就是确认了1884年战局对中国不利时法国和越南之间签订的《第二次顺化条约》,其中否定了中国对越南的宗主权,改由法国全权管理越南。法国军队移交台湾,中国军队撤出越南,至此越南脱离中国,成为法国属地。
6月11日,天津条约签订。左宗棠对主和的李鸿章作出以下批评:“对中国而言,十个法国将军,也比不上一个李鸿章坏事”;“李鸿章误尽苍生,将落个千古骂名”。
后世学者有人认为镇南关大捷“具有很大的偶然性”,而且双方刚停战张之洞上报“探报法添兵到,定二八之日分路复攻谅山。”
关于镇南关一谅山大捷的战果,,有清方奏报、法方记述、越南目击者的口碑资料可查考。由于清朝统兵将领的派系不同,清方奏报大致上可以分为三个系统:一是广西巡抚潘鼎新通过李鸿章向清廷奏报的淮军系统;二是署广西提督苏元春和前福建布政使王德榜通过彭玉麟向清廷奏报的湘军系统;三是关外军务帮办冯子材通过张之洞向清廷奏报的粤军系统。
清历史记载:潘鼎新、李鸿章奏报:历时三昼夜的关前隘“一场恶战”,“毙匪千余擒斩数百,并夺获枪炮干讲不计其数。”苏元春、彭玉麟奏报,冯子材、张之洞奏报:“毙敌约数百。”“(初八日)毙匪千余,斩首数百。”“夺获枪械、衣物甚黔。”
和家信:“凉山克复,系西报传来,伤其提仔,毙真法人五百余,专教民耳。”“洋人自谓入中国以来,,未有如此次之大败者。西电言,法提督尼格里伤毙。”“镇南关连日胜仗,又报十三日官军克复谅山,法人大挫,斩擒千有余人,伤者不计。”
法国记载:黎贡德加尔新记述:三月二十三日,“总共死4人、伤25 人,总数为29 人丧失了战斗力。”“(三月二十四日)总共死70 人,其中军官7人。伤188人,