八月,谕岑毓英督饬刘永福及在防各营规复北圻,并谕潘鼎新饬各军联络声势,分路并进。提督苏元春与法军战於陆岸县,败之。十月,内阁学士周德润奏:“官军进取越南,宜以正兵牵制河内之师,别用奇兵由车里趋老挝,走哀牢,以暗袭顺化,募用滇边土人,必能得力。”得旨交滇督详察筹办。是月,苏元春与法人战於纸作社,阵斩法兵官四人。十一月,王德榜军大败於丰谷,苏元春不往援,唐景崧与刘永福、丁槐军攻宣光,力战大捷,优诏褒之。十二月十九日,法兵攻谷松,王德榜以丰谷之败怨苏军不救,至是亦不往援,苏军败退威坡,谅山戒严。帝命冯子材帮办广西关外军务。二十九日,法军攻谅山,据之,潘鼎新等退驻镇南关,龙州大震。唐景崧、刘永福、丁槐攻宣光,月馀不能下。谅山失守,岑毓英虑景崧等军断后援,令勿拚孤注,景崧不可。冯子材与法军战於文渊,互有杀伤。
十一年正月初九日,法兵攻镇南关,轰毁关门而去,提督杨玉科战殁。潘鼎新退驻海村,帝命戴罪立功。元春退驻幕府。王德榜自负湘中宿将,屡催援不至,鼎新劾之,落职,所部归元春辖。法军攻刘永福於宣光,永福军溃。唐景崧退驻牧马,钦、廉防急。彭玉麟请调冯子材军防粤,朝旨令鼎新议,鼎新素不协於子材,乃命子材行。子材以关外防紧,不肯退,玉麟乃令专顾桂防。鼎新师久无功,褫职,以李秉衡护理广西巡抚,苏元春督办广西军务。法兵既毁镇南关,逃军难民蔽江而下,广西全省大震。子材至,乃力为安辑。
子材久驻粤西,素有威惠,桂、越民怀之,人心始定。乃於关内十里之关前隘,跨东西两岭间,筑长墙三里馀,外掘深堑,为扼守计,自率所部驻之,而令王孝祺勒军屯其后为犄角。法兵扬言某日犯关,子材逆料其必先期至,乃议先发制敌,鼎新止之,子材力争,径率王孝祺军夜犯敌垒,杀敌甚多。法起谅山之众扑镇南关,子材誓众曰:“法再入关,吾有何面目见粤人?必死拒之!”士气皆愤。法攻长墙,急炮猛烈,子材勒诸统将屹立接战,遇退后者手刃之。战酣,子材自开壁率两子相荣、相华直冲敌军,诸军以子材年七十,奋身陷敌,皆感愤,殊死战。王孝祺、陈嘉率部将潘瀛、张春发等随其后,王德榜军旁至,夹击之,毙法兵无算。鏖战两日,法军子弹尽,大败溃遁。子材率兵攻文渊,法军弃城走。诸军三路攻谅山,孝祺、德榜战尤力,连战皆捷。二月十三日,遂克谅山,法悉众遁。子材进军克拉木,逼攻郎甲,王孝祺进军贵门关,尽复昔年所驻边地。越民立忠义五大团;二万馀人,皆建冯军旗帜。西贡亦闻风通款。自海通以来,中国与外国战,惟是役大捷,子材之功也。
法兵六千犯临洮府,复分两队;一北趋珂岭、安平,一南趋缅旺、猛罗。滇督岑毓英命岑毓宝、李应珍等扼北路,王文山扼南路,而自率军当中路,皆有斩获。法军遂合趋临洮府,滇军拒战南北路,回军夹攻之,阵斩法将五人,法军大溃。
时法兵舰据台湾之澎湖。谅山既大捷,法人力介英人赫德向李鸿章议和,言法人交还基隆、澎湖,彼此撤兵,不索兵费。鸿章奏言:“澎湖既失,台湾必不可保,当藉谅山一胜之威,与缔和约,则法不至再事要求。”朝廷纳其议,立命停战。临洮之战,乃在停战后电谕未达前也。鸿章遽请签约,令诸将皆退还边界,将士扼腕痛愤,不肯退,彭玉麟、张之洞屡电力争。帝以津约断难失信,严谕遵办。法人要求逐刘永福於越南,张之洞乃拟令永福驻思、钦,永福坚不肯行,唐景崧危词胁之,朝旨严切,乃勉归於粤,授总兵。冯子材奉督办廉、钦边防之命。约既成,越南遂归法国保护焉。