1885年2月15日,冯子材率领一营兵力赶到镇南关。他和潘鼎新商议战守问题,潘鼎新却认为广西军足以守关,不需要冯子材的部队,让冯子材军守东路,而苏元春军守西路,以杨玉科军驻镇南关居中路。这时的潘鼎新是大权在握,清廷将广西前线指挥权集中在潘鼎新一人手中,而以苏元春、冯子材为帮办。
2月23日,法国侵略军来攻镇南关前的文渊州,提督杨玉科率军抵抗。扬玉科不幸阵亡,广西军溃败,当夜法军闯入镇南关,镇南关失守,广西震惊,南宁戒严,形势非常危急,战火已经燃烧到中国的边沿地区。法军占领镇南关,得意忘形,竟在关前插立木柱,用汉文写上这样的大字:“广西的门户已不再存在了!”愤怒的镇南关人民针锋相对,也在关前插立木柱,用大字写上:“我们将用法国人的头颅重建我们的门户!”表现了中国人民坚决抵抗侵略的决心和信心。在当地军民的打击下,法军被迫于25日退出镇南关。退驻关外30里地的文渊城,伺机反扑。
法军退出镇南关后,冯子材移驻关内10里处的关前隘。这里形势险要,易守难攻。他召集各军将领开会,研究消灭敌人的办法。他听说这里有个叫蒙大的人很有见识,有智有谋,决定亲自到蒙家村去拜访。他儿子说把蒙大请来就行了,不必亲自去拜访。冯子材却说:刘备三顾茅庐,请出诸葛亮,我们为打败法军,怎能不亲自拜访英雄呢!
这天晚上,冯子材到蒙家村找到蒙大,共商作战大计。冯子材问有什么办法打退法军,蒙大指着外面的山说:这关山如同大鱼张开了嘴,法军孤军入关,断难逃走,地形对我们很有利。冯子材连连点头。蒙大又说:法军的快枪、花炮打得很远,很有威力,而进行肉搏就比不上我们的马刀了,所以,要把敌人引进来,展开肉搏战。大打大胜,小打小胜,我们应该大打,动员老百姓参加,这样就可大胜了。这一番话说到了冯子材的心里。
关前隘两旁是高山峻岭,中间只有一条通道,易于防守,冯子材决定选这里当战场。他与潘鼎新商议战守,建议在关前隘设置防御工事,关前隘横东、西两岭之间,在关前隘筑长墙三里余,墙外掘堑沟,以便更好地扼守。经潘鼎新同意后,冯子材督所部加紧兴工,在隘口抢筑了一条3里多长的墙,在墙外挖了一道深沟,又在东、西岭上修建多座炮台,关前隘成了一道坚固的屏障,为敌人布置好了天罗地网。
工事修好以后,冯子材又作了周密的布署,他命令王孝祺军驻在他后面半里远的地方,以为犄角;命苏元春军屯驻幕府,互相呼应;命王德榜军驻在关东35里的油隘,准备抄袭来犯敌人的后路。而蒋宗汉广武军、方友升亲军同时屯驻凭祥,在幕府后30里。潘鼎新率鼎军屯海村,在幕府后60里。魏纲鄂军屯艾瓦,防支葑,在关西百里。
法军退出镇南关后,据守文渊州城,经常出城扰及长庆府治艽葑,威胁唐景崧军后路及龙州,潘鼎新令冯子材分拨萃军5营扼扎扣波。后法军来犯,被萃军打得大败。
以前,冯子材曾三次率军出关作战,威震越南,越南军民对他很敬仰。法军扬言要在3月24日、25日来犯镇南关,取龙州。越民把这个消息报告了冯军。冯子材决定先发制敌,主动出击,经张之洞征得潘鼎新同意后,冯子材率萃军于3月21日夜袭击文渊城,因敌人早有防备,在攻占了两个炮台之后被迫撤退。
3月23日,尼格里率法军分3路直扑关前隘,以两路进攻东岭炮台,一路猛扑关前隘长墙。法军依仗猛烈的炮火,气势汹汹,先后攻陷了东岭上三座炮台,然后居高临下,掩护部队向长墙进攻。“炮声震天,远闻七、八十里外,山谷皆鸣”。冯子材指挥部下英勇抵抗,誓与长墙共存亡。王孝祺军从小路抄袭敌人背后,牵制了敌人的正面火力,敌人稍稍退却。苏元春军及时赶到东岭,与法军争夺炮台。各军奋力抵抗,一天连一口饭都没吃上,战斗到深夜仍未停止。
这一天,王德榜军自油隘出军夹击,出击文渊城,与敌人鏖战几个小时,双方互有伤亡,法军用大量马匹驮运军火、干粮前往镇南关,被王德榜军打退,法军的粮械不得入关,切断了敌人的供给线。
形势十分危急,法军攻势凶猛,但冯子材已无兵可调,只有苏元春的部下陈嘉还有几营人驻扎在凭祥,冯子材便写了一张请帖,要陈嘉前来商量。陈嘉正在养伤,他接到请贴后立即征求部下意见。有人说:我们不是冯子材的部属,可以去也可以不去。陈嘉仔细考虑后说:不去不好,冯邦办有调动全军之权,现在他不是下命令来调我,而是下贴子请我,这是很给面子的,怎能不去呢?于是他便带人连夜开到隘口。
冯子材见陈嘉来了,对他说:现在法军已占领了东岭炮台,长墙受到法军炮火的威胁,我们要夺回炮台。我现在已无兵可调,你有3营人,我再加上两营,请你带领去攻东岭炮台,你看有困难吗?陈嘉见冯子材如此器重自己,满口答应,并趁夜间领兵登上旁边的一个山头。
3月24日,战斗更激烈,法军以炮火掩护,猛扑长墙,炮声震天,弹如雨下,阵地上成了一片火海,双方都有很大伤亡。苏元春急了,派一个部将请求冯子材撤退,那个部将知道冯子材不会退下去,便委婉地说:苏提督请问老前辈,这里很难守下去,可否退到凭祥再战呢?冯子材生气地说:这里有一道长墙,有险可守,退到凭祥靠什么来守呢?这次打败了,我没脸回去见两广百姓!你转告苏提督,你们年轻,前途远大,要退就偷偷地退走,不要动摇军心。我老了,死也和士兵们死在这道墙上。苏元春听说冯子材坚决不肯撤退,他也只好坚持战斗。
法军的攻势越来越猛,射过来的开花炮弹不时撒落在冯子材旁边,有的爆炸了,有的没有爆炸。他的侄子见这里很危险,就请他稍作退避,他立刻大发脾气,斥责他的侄子说:怕炮弹还打什么仗!我是宁死不退的,谁说退就是动死摇军心。见他两眼冒火的样子,他的侄子再也不敢提劝他躲蔽的事了。
冯子材下令坚守长墙。他命令各位统领,凡败逃者,无论何将遇何军,都要斩杀,并于各路口设卡,以截杀逃跑者,冯子材、王孝祺杀死了临阵脱逃的士兵,顿时军心大振,同法军进行浴血奋战。但法军在猛烈炮火的掩护下,像恶狼一样猛扑长墙,有的已经冲上长墙。在这千钧一发之际,冯子材大呼一声,手持长矛越出墙外,拼死杀进敌群,他的两个儿子相荣、相华也随父而出,与敌人冲杀。墙内官兵见主帅已经冲出,都奋不顾身地冲上前去,个个争先杀敌,杀得敌人人仰马翻,法军人头纷纷落地,法军失去了武器优势,顿时大乱,有的跪地求饶,有的企图逃跑。
这时,从敌人背后又杀出一股清军,堵住了法军的退路。原来,这是冯子材事先安排好的一只敢死队,他们身上涂满猪血,手持大刀,悄悄越过长墙,和死尸躺在一起,法军冲过来时,并没有发现他们,等法军想夺路逃跑时,他们一跃而起,法军见这些浑身是血的死尸又活了,吓得魂飞魄落。
在冯子材的带领下,全军以排山倒海之势,一齐涌出,肉搏冲锋,他们不顾“肉雨扑征衣”,任凭“血花飞满面”,经过一场短兵相接的白刃战,终于把法军逼离长墙,压下山谷。王孝祺、王德榜军先后赶到东岭,和苏元春军一起经过“七上七下”的激烈肉搏,夺回了失去的三座炮台,并以重炮猛轰败退的敌人。这时,1000多名越南义军和当地壮、瑶、白、彝、汉等族人民自发地前来助战,把法军重重包围起来,使敌人陷入四面楚歌的绝境。
3月25日,冯子材下令发起总攻击,击毙法兵1000余人和数十名法军军官。法军全线崩溃,狼狈逃窜,有的扔掉枪支,“去帽为叩首状,以手捍颈”,露出了纸老虎的真实面目。这就是震惊中外的镇南关大捷。
镇南关大捷对敌人的教训是深刻的。一名法国侵略者事后还心有余悸地说:“中国军队的号筒愤怒地响起前进的命令。从所有的堡垒,从所有的天边各处,像烟云一样的中国军队,展开旗帜跑来,发出震天动地的喊杀声”
3月26日,冯子材亲率10营攻打文渊州,法军望风而逃,撤到谅山,聚集到谅山的法军有4500人左右。冯子材为了不给溃散法军以喘息的机会,决定乘胜出击。
法军将领尼格里企图坚守谅山,等待援兵到达后再犯镇南关。冯子材鉴于谅山是越南北部的军事要地,如果不先把它攻取下来,以后就很难再攻取了。法军连吃败仗,心胆已寒。他认为“与其明攻多损士卒,不如暗取更易见功”。他和苏元春等人商议,“以正兵明攻驱驴,出奇兵暗取谅山”。冯子材派杨瑞山率部星夜渡过淇江,于第二天黄昏后潜至谅山,散伏在城外各处。
3月28日,冯子材、苏元春、王德榜、王孝祺各部先后向前推进,兵分三路逼近驱驴:冯子材、苏元春率主力进攻正面;王孝祺部和冯子材一部进攻西面;王德榜部进攻东面。法军倚伏驱驴北面高地有坚固工事,负隅顽抗。尼格里鉴于右翼和正面阵地工事坚固,而东面地形较难防守,决定由中校爱尔明率军一部,向东面的王德榜部发起攻击,王德榜部士卒多人受伤。29日下午,冯子材、苏元春两军乘法军调动兵力,正面防御力量减弱之机,再次发起猛攻。激战中,尼格里胸部中弹受重伤,接替他指挥的爱尔明加下令部队向淇江南岸撤退,谅山守敌见这么多法兵败退下来,慌乱中砍断浮桥,自家人断自家路,致使一些法军在溃逃中落水溺死。随后,法军退入谅山,并立即准备分兵两路向南撤退。
在法军撤退时,清军主力徒涉淇江,向谅山进逼。在此之前,埋伏在谅山城外的杨瑞山部乘法军在拂晓熟睡之机,突然发起攻击,法军仓皇应战,乱作一团。扬瑞山“督率各营员弁、勇丁、蚁附而上,劈开城门、兵刃交下”。法军遭到重创,死伤累累,残部向南岸逃窜。清军乘胜追击,在山谷中俘获不少敌人。
清军在克复谅山的战斗中,毙伤法军近千人,缴获大量军械物资,仅杨瑞山部就缴获法军大小火炮30余门。攻克谅山后,冯子材又率大军接连光复谷松、威坡、长庆、船头等地。
在攻克谅山的作战中,法军的贪生怕死也得到了充分表现。以爱尔明加为首的一个旅的法军在败逃时,把13万银元和无数袋面粉扔到河里,大量作战物资被丢在原地,“在旅部队伍出发的时候,还留下180至200罇的烧酒,全打破了,又有200袋大米、谷物和食盐,先戳穿了,然后混和起来,践踏完事”。为了逃得更快,“他命令烧毁文件、档案,破坏电信机器。总是像在谅山一样,为着不拉长纵队,为着可以逃得快一点,为着多些苦力抬伤员,他命令抛弃回光通信机,——用手枪打碎这机的外镜,并抛弃军官们的行李和堆积在屯梅的粮食和所有的军实物资”。
镇南关大捷是中法战争以来中国所取得的一次重大的胜利。也是法国侵略者发动侵略越南和侵略中国战争以来最惨重的一次失败。这次战争的胜利,彻底扭转了前线的局势,使中国由步步后退变成节节前进,鼓舞了中国军队的士气,鼓舞了正在坚持与法国侵略者进行艰苦斗争的越南人民,说明法国侵略者是纸老虎。