應十分困難。但是,法軍仗著武器優勢,悍然向龍州發動進攻。
馮子材先發制人,在夜裡率部攻擊文淵的敵人。他親自擔任主攻,從關前隘出發,從北面攻擊。
王德榜的湘軍從油隘出發,從東面攻擊。清軍重挫法軍精銳,迫使法軍指揮官尼格里不等援軍到齊,就向清軍堅固築壘的地域發起攻擊。法軍第二旅進攻清軍關前隘陣地,戰鬥打得相當激烈。
方友升所部湘軍也跟隨馮子材作戰。
法軍利用大霧作隱蔽,迂迴偷襲大青山頂峰,企圖突然奪取大堡,控制東嶺制高點,前後夾攻,擊潰清軍。當法軍接近長牆時,馮子材手持倭刀,大呼一聲,躍出牆外,他的兩個兒子緊隨在後。將士們隨主帥一齊湧出長牆,衝入敵陣,隱蔽在牆外壕溝草叢中的敢死隊從敵群中殺出,楊瑞山和麥鳳標率領援軍衝出龍門關,突然攻擊法軍後側。當地百姓和部分零散兵勇主動前來助戰,在長牆前面的盆地中展開了一場激烈的肉搏戰。清軍以己之長,制敵之短,把法軍打得暈頭轉向。中路法軍三百多人大部被殲。
下午,清軍發起反攻,奪回了東嶺的三座堡壘。王德榜所部首先擊潰法軍的增援部隊,消滅了法軍的運輸隊,接著從法軍右側後方夾擊東嶺的法軍,配合友軍奪回了被法軍佔領的堡壘。
馮子材率領部隊從正面出擊。法軍三面被圍,傷亡慘重,後援來不及趕到,糧彈將盡,尼格里不得不下令撤退,狼狽逃回文淵。馮子材指揮各路軍隊追出鎮南關,深夜收軍。
這一仗,殲滅了法軍精銳近千人,不僅使東線的清軍反敗為勝,而且使整個中法戰爭的戰局發生了根本性的變化。
隨後,馮子材親率部隊開出鎮南關,進攻文淵。王德榜部由小路抄襲法軍的右翼。文淵的法軍傾巢出動,竭力抵抗,但清軍將士愈戰愈勇,法軍頭目紛紛落馬,部隊潰散。馮子材指揮大隊衝入街裡,攻克文淵,又揮軍分路追擊,
尼格里企圖依靠他的四千五百兵力堅守諒山,等待援兵,再進攻鎮南關。他以主力扼守驅驢北面的高地,把一部分兵力配置在淇江南岸,分守通向谷松和屯梅的交通要道。馮子材派兵繞道前進,乘夜渡河,從小路抄到諒山,散伏在城外。馮子材兵分三路一齊逼攻驅驢。法軍依託有利地形和工事負隅頑抗,清軍正面攻擊受阻,尼格里調動兵力向東面威脅最大的湘軍反擊,王德榜率部抵抗。
馮子材乘法軍調整部署向東反撲的機會,猛攻正面,奪取了驅驢北面的高地和石洞堡。尼格里身負重傷,愛爾明加中校接替指揮,下令向淇江南岸撤退。清軍乘勢衝進驅驢。
諒山的法軍在慌亂中砍斷浮橋,來不及過河的法軍泅水逃命,很多人淹死。法軍丟棄大批裝備物資,於深夜撤出諒山。埋伏在城外的清軍乘亂攻入諒山城,法軍殘部狼狽逃竄。清軍主力渡過淇江,勝利入城,諒山宣告收復。
鎮南關一役之後,中國軍隊開始轉入反攻。
法軍總司令波里也對愛爾明加丟失諒山極為不滿,命令他停止撤退,堅守屯梅和谷松,愛爾明加倉促轉入防禦。
清軍佔領諒山後,馮子材繼續揮師南下。東路部隊合力猛攻谷松。同日,西路部隊在越南抗法武裝的配合下,夜襲屯梅,愛爾明加慌忙率部逃到谷松,與壽非的部隊會合後又前往船頭,法軍在屯梅和谷松的防線被粉碎了。清軍將法軍趕到郎甲以南,收復了開戰以來丟失的地盤。
東路的各路清軍尾追法軍到船頭,西路大軍也攻下了觀音橋,抵近郎甲。這時,西線的滇軍和黑旗軍已取得臨洮大捷,正向興化推進,桂軍準備從牧馬進攻太原。粵軍出兵欽州,沿東海岸進攻廣安。鮑超率領三十多營湘軍和滇軍正向龍州挺進。河內、太原、海陽和西貢等地的人民紛紛醞釀起義,馮子材決定親自率領大軍乘勝攻擊北寧與河內。王德榜因功恢復原職。
402
法軍在3月底佔領了澎湖島及漁翁島。清軍正要在各處對法軍發起大規模反攻,清廷下達了停戰撤兵的命令。 。。
1885年,光緒十一年(3)
法國發動侵華戰爭後,各方面圍繞和戰問題的外交活動和秘密談判幾乎沒有停止過。鎮南關大捷本來使中國在軍事和外交上都處於有利地位,但清廷在整個中法戰爭期間,即使在被迫宣戰以後,也擔心“兵連禍結”會激起“民變”、“兵變”,因此始終或明或暗、直接間接地向法國進行求和活動。李鴻章等人主張“乘勝即收”,把鎮南關大捷當作尋求妥協的絕好機會,建議清廷立即與法國締結和約。