换将易帅
1884年底,刘永福的黑旗军配合西线清军,围困占据宣光城的法军达3个月之久,城中法军几乎弹尽粮绝。但随着法国援兵的到来,宣光未能攻克。1885年2月,法国再次增兵越南,在法军统帅波里也(BrièredeI′Isle)指挥下,集中两个旅团约万余人的兵力向谅山清军发动进攻,广西巡抚潘鼎新不战而退。2月13日,法军未经战斗,即占领战略要地谅山。2月23日,法军进犯文渊州,守将杨玉科力战牺牲,清军纷纷后撤,法军乘势侵占广西门户镇南关,炸毁关门,并在关前废墟中插上一块木牌,得意地用汉字写着“广西的门户已不再存在了”,广西军民在法军退走后在关前插上木桩,写上“我们将用法国人的头颅重建我们的门户!”作为对法国侵略军的回答。由于潘鼎新的战败,清政府革去他广西巡抚职务,任命年近7旬的老将冯子材帮办广西军务,领导镇南关前线的抗法斗争。
清军出击
冯子材决心“保关克谅”,并相机出击收复北圻各城。冯子材赶到镇南关后,根据前线清军各部之间多存派系门户之见的情况,首先召集前敌诸将晓以大义,使各将领在抗击侵略者的斗争中团结起来。各将领共推冯子材为前敌主帅,统一指挥协调各军的行动,已从镇南关退至文渊(关外15公里处)、谅山,准备组织新的进攻。冯子材亲自爬山涉水勘察地形,根据当前敌情和镇南关周围的地形条件,决定在关前隘地区依托有利地形,构筑坚固防御阵地。关前隘在镇南关内约4公里处,系镇南关通往内地之要冲,东西山岭对峙,中间有一条长2公里多、宽1公里多的盆谷,地势险要,易守难攻。冯子材亲督士卒用土石筑起一道长1.5公里、高7尺、宽4尺的土石长墙,横跨于东西山岭之间,墙外挖成深4尺的壕堑,并在东西山岭修建堡垒多座,形成一个完备的山地防御阵地体系。在兵力部署上,是时,广西前线清军共有90余营4万余人,分驻于镇南关至龙州一线。广西巡抚潘鼎新畏葸怯敌,远离前线;冯子材亲率所部萃军9营扼守长墙及两侧山岭险要,充作第一梯队,担任关前隘主阵地正面防御。总兵王孝祺部8营屯冯军之后为第2梯队;湘军统领王德榜部10营屯关外东南的油隘,保障左翼安全并威胁敌之后路;冯子材另以所部5营屯扣波,保障右翼安全;广西提督苏元春部18营,屯关前隘之后2.5公里的幕府为后队;另有12营屯凭祥机动。总计前线兵力约60余营,3万余人,一切准备就绪。
决战
1885年3月中旬,冯子材得悉法军将经扣波袭艽封、攻牧马,绕出镇南关之北,急调兵力前往扣波和艽封,挫败了法军迂回的企图。19日,有人密报法军将入关攻打龙州,为了打乱法军的进犯计划,冯子材决定先发制人。于21日夜率王孝祺部出关夜袭法军占据的出击文渊(今越南同登),击毁法军炮台两座、毙伤法军多人,取得较大胜利。清军的主动进击,打乱了法军的作战部署,迫使法军东京军区副司令尼格里上校决定不等援军到齐即向清军坚固防御阵地发起进攻。23日晨,法军第2旅千余人趁浓雾偷偷进入镇南关,另以千余兵力屯于关外作预备队。
上午9时30分,大雾开始消散,法军兵分两路组织进攻:第一四三团第1营和外籍军团第2营等沿东岭向大小青山方向实施主攻;第一一一团第1营沿关内谷地前进,向长墙进攻,企图在主攻部队得手后两路夹击,攻占关前隘清军防御主阵地。法军主力在炮火掩护下,攻占东岭三座堡垒。并猛攻长墙。冯子材指挥所部顽强抵抗,一面商请驻于幕府的苏元春部前来接应,并通知王德榜部从侧后截击法军。在丢失三座堡垒的危急关头,冯子材大声疾呼:“法再入关,有何面目见粤民?何以生为?”守卫清军在冯子材的爱国情感鼓舞下,英勇抗击,誓与长墙共存亡,阻止了法军的前进。
下午4时许,苏元春率部赶到东岭参战,王德榜部也自油隘袭击法军,并一度切断了法军运送军火、粮食的交通线,牵制了法军预备队的增援,有力地配合了东岭的战斗,战斗呈胶着状态,入夜,清军进一步调整部署,由苏元春部协助冯子材守长墙,王孝祺部夺西岭,陈嘉部守东岭。冯子材还另调驻扣波的5营冯军前来抄袭法军左翼。次日晨,尼格里指挥法军在炮火掩护下,分三路再次发起攻击,沿东岭、西岭和中路谷地进攻关前隘阵地。冯子材传令各部将领:“有退者,无论何将遇何军,皆诛之”。经激战,法军接近长墙,冯子材持刀大呼,率先率领两个儿子跃出长墙,冲向法军。全军感奋,一齐出击,与其进行白刃格斗,战斗异常惨烈。
战至中午,终将中路法军击退。与此同时,陈嘉部、蒋宗汉部在东岭与法军展开了激烈争夺战,傍晚时分,王德榜在击溃敌之增援部队及消灭其运输队后,从关外夹击法军右侧后,配合东岭守军夺回被占堡垒。这时,王孝祺也已击退沿西岭进攻之敌,并由西岭包抄敌后,使其腹背受敌。法军三面被围,法军死伤近300人,后援断绝,弹药将尽,被迫败退,尼格里只得下令撤退,狼狈逃回文渊、谅山。冯子材抓紧有利战机,率部乘胜追击,于26日攻克文渊,29日攻克谅山,宣称毙法军近千名,重伤法军指挥官尼格里,后又将法军残部逐至郎甲以南。取得重大胜利。