中法戰爭,其實可以分為三個階段,
第壹個階段,清政府陸上大敗。在越南山西之戰中打敗,越南局勢大壞,法國開始謀劃進攻中國西南邊疆。因為辦事不力,清政府撤職了以恭親王為首的軍機處,是為甲申易樞。醇親王奕譞上臺後馬上命廣西巡撫徐延旭嚴守北寧,令雲貴總督岑毓英迅即出關,加強興化方面的防禦,並令兩廣總督張樹聲“選派得力將領,統帶勁旅,馳赴鎮南關,以實後路”。但是由於將帥昏庸、怯懦,互不協調,軍紀廢弛,兵無鬥誌。北寧與興化相繼失守。之後清政府派李鴻章著手與法國的和談。
第壹個階段,可以說清軍全敗,但是戰事都發生在越南境內。此時李鴻章與法國簽訂了《李福協定》,但是李鴻章並沒有同意該條約,中法雙發暫時停戰。此時法國仍然想要擴大戰爭,將戰火引入中國西南。
北黎沖突就是法軍為了擴大戰爭而蓄謀的沖突。此沖突乃是中法戰爭第二階段的開始。法軍的無理的要求清軍撤防,並且槍殺清軍派去的聯絡官,向清軍進攻。但是清軍奮勇反擊,重創了法軍,法軍潰逃。
法國以此為借口,誣稱“中國背約”,要求賠償。並且發動了馬尾海戰,馬尾海戰中,清軍將領畏戰而逃,福建水師無人指揮,戰鬥不到1小時,幾乎全軍覆沒,法軍以此控制了臺灣海峽,並且進軍臺灣,占領了基隆淡水。清廷此次並沒有妥協,而是頒發上諭,譴責法國“橫索無名兵費,恣意要求”,“先啟兵端”,令陸路各軍迅速進兵,沿海各地嚴防法軍侵入。這道上諭實際上是對法國侵略者的宣戰書。
第三個階段就是鎮南關戰役了。當時中法兩軍壹直在中越邊境交戰,法軍壹度攻下鎮南關,因兵力不足而焚關而去,伺機再犯。時任廣西巡撫的潘鼎新派老將馮子材幫辦廣西關外軍務,馳赴鎮南關整頓部隊,部署戰守。得悉法軍將犯鎮南關,馮子材在隘口搶築了壹條橫跨東西兩嶺高七尺、長三裏、底寬壹丈的長墻,墻外深掘塹壕,築成了較完整的防禦陣地。
3月法軍傾巢出動撲向鎮南關,馮子材率士卒沖出墻外,激勵將士猛烈搏鬥,終將法軍擊退,遏阻了法軍對中國邊境的窺伺。清軍乘勝追擊,連破文淵、諒山,將法軍逐至郎甲以南,重傷東部法軍統帥尼格裏。法軍陷入困境。鎮南關大捷使清軍在中法戰爭中轉敗為勝。法軍戰敗的消息傳至巴黎後,法國費裏內閣倒臺。
其實近年來,有不少學者認為,“中國不敗而敗,法國不勝而勝”這樣的說法是不切實際的。當此之時,法國內閣雖然倒臺,但是法國又馬上通過了五千萬法郎的軍費議案用以中法戰事,法國遠東艦隊還占據著澎湖,控制著臺灣海峽。而此時清軍兵餉都難以支付,黑旗軍只剩不到五百人,兵源補充也很困難。因此李鴻章,張之洞等官員都認為此時乘勝即收是最好的方案。因此清政府決定把握戰機、以戰促和,顧及全局。
再從《中法新約》看,此和約,不割地不賠款,只是要求在邊界開放兩個通商口岸。在清政府簽訂的條約中,是損失最小的壹個。而中法此戰,法國國際聲譽壹落千丈,而中國之國際地位上升,此戰為中國創造了十年的穩定環境,而這十年正是中國發展最為迅速的十年。所以,這場戰爭是雙方均有得失的戰爭:中國沒有失敗,法國也沒有勝利。