19世紀後期,法國在和英國爭奪加拿大和印度失敗後,開始把目光投向了遠東地區。它首先看中的就是越南,1883年,法國侵略軍突然攻占越南首都順化,強迫越南成為法國的被保護國。當時中國是越南的保護國,所以越南多次派使者向清政府求援。

清政府早就被西方列強打怕了,但又駁不開麵子,於是下令派遣軍隊援助越南,但又不許他們主動出擊。同年十二月,法國軍隊向駐紮在越南山西的清朝軍隊發動突然襲擊,中法戰爭爆發。

第二年七月,法國海軍突襲中國福建水師,由於指揮官的懦弱無能和清政府的退讓政策,這支艦隊很快就被殲滅了。直到這個時候,清政府才被迫向法國宣戰。

鎮南關大捷圖 點石齋畫報,光緒末年上海東亞社石印本。

在越南的中國軍隊由於缺少後援,加上武器裝備落後,很快就失敗了。法國軍隊占領越南後,繼續進犯中國廣西邊境。兩廣總督張之洞深感缺乏人才,特地向朝廷推薦已經退休的廣西提督馮子材帶兵抵抗法國侵略者。

馮子材曾經跟隨向榮和張國梁參加過鎮壓太平天國的戰爭。他作戰非常勇敢,有一次他一天之內攻破太平軍70多個營壘,張國梁拍著他的肩膀說:“你勇敢得讓我自愧不如啊!”馮子材立了很多戰功,被封為副將。中法戰爭爆發時他已經70多歲了,早已告老還鄉。當張之洞邀請馮子材出山的時候,他一開始謝絕了。但經不住張之洞頻頻邀請,最終答應出山,和兩個兒子組織了一支軍隊開赴越南前線。他雖然因為蘇元春資曆不如自己官卻比自己大而不滿,但聽說諒山鎮南關情況不妙時,馬上趕了過去。防守鎮南關的清軍不戰而退,法軍已經占領了鎮南關。法軍非常得意,幹脆把鎮南關一把火燒掉,然後撤退了。

馮子材趕到鎮南關後,命令士兵在周圍修築一道長牆,集中部隊在此防守,防止法軍從鎮南關進入中國。法軍知道馮子材不好對付,事先放出風聲說某天會進攻。馮子材料定法軍一定會提前來,所以決定搶在敵人進攻之前發起攻擊。當時大家都不想打,馮子材據理力爭,親自率領軍隊奇襲法軍營地,取得勝利。

法國人沒想到馮子材竟然敢來進攻,下令兵分三路,包抄鎮南關。馮子材對將士們說:“法國人如果這次還打進來的話,我們還有什麽臉麵去見兩廣的父老鄉親?”將士們士氣大振,發誓絕不讓法軍通過鎮南關。法國人仗著武器先進,先用大炮猛轟了一陣,把長牆炸了好幾個缺口出來,然後派非洲雇傭軍和當地的教匪輪流攻擊,想衝出個缺口。馮子材率領部下痛擊敵人,沒讓他們占到便宜。第二天法軍又撲了上來,馮子材用大旗指揮各路將領抵抗,下令臨陣脫逃者格殺勿論。法軍大炮又轟開了幾個缺口,一些法國人已經爬進了長牆。馮子材見形勢危急,大喝一聲,手持長矛跳出長牆和敵人展開肉搏戰。他的兩個兒子也跟隨父親衝上去。將士們見70多歲的馮子材如此英勇,頓時熱血沸騰,紛紛衝出去和敵人展開殊死搏鬥,附近的百姓也拿著鋤頭釘耙前來助陣殺敵。法軍近戰能力差,漸漸抵擋不住,紛紛向後退。清軍在馮子材的帶領下越殺越勇,很快就把法國人趕跑了,取得了鎮南關大捷。法軍死傷1000多人,幾十個軍官喪了命。兩天後,馮子材乘勝攻下了文淵,接著收複了好幾個城池,把法軍打得大敗。

越南百姓早就不堪忍受法軍的暴行了,聽說馮子材來了,全都跑出來迎接,爭著慰問。越南人還自發組織了很多民團,打著馮子材的旗號痛擊法國侵略者,很多人主動跑來為清軍帶路、提供糧食。正當清軍節節勝利的時候,朝廷竟然發來停止追擊的詔書。馮子材萬分悲憤,但也隻能聽從命令。原來腐敗的清政府害怕法國會乘機報複,難得打個勝仗,就想借著這個機會和法國人議和。當時法國的日子也不好過,前線連吃敗仗,士氣低落,內閣也因為這事倒台。他們一聽到清政府想議和,高興還來不及,馬上同意了。清政府為了求和,不惜繼續出賣國家利益,雖然是戰勝國,但得到的卻是戰敗國的待遇,和法國簽訂了喪權辱國的《中法新約》,把大量國家利益出賣給了法國人。全國上下一片罵聲,但也隻能接受現實。馮子材含恨從越南撤軍,走的那天,越南百姓哭著來給他們送行。越南最終也沒能逃脫法國的魔掌,清軍撤走後不久,法國人就回來占領了越南,把它作為自己的殖民地。