12日法軍水陸并進,分三路向北寧進攻;一路由城南的新河北攻,一路由城東西攻,一路乘艦船駛至城北之涌球進攻。陸路法軍在桂陽、攬山、左河等地與清軍激戰。水路法軍艦船沿江北上,突破涌球塞河處,猛攻涌球土山。據守涌球的提督陳朝綱兩營聞炮頓潰,附近的周炳林營亦潰。法軍占領涌球土山后,將大炮安置在山上,直接轟擊北寧城,對北寧造成嚴重威脅。黃桂蘭、趙沃急忙商調慈山各軍來援。慈山之軍不能應急,副將黨敏宣八營遠避六頭外,屢調不至,再加之沒有戰役預備隊,無法組織反擊或是增援受威脅最大的涌球方向。北寧守軍再無力堅守城池,于是選擇棄城而逃。清軍隨即全線崩潰,退至太原、諒江一帶。12日晚,法軍進入北寧城,13日繼續追擊清軍,連克太原、諒江、郎甲等地。桂軍退守諒山以南山地,黑旗軍撤回興化。
北寧戰役歷時五天,清軍傷亡一千余人。4月初,法軍移兵進攻西線的滇軍。岑毓英不戰而退,將滇軍撤至中越邊界的河口、保勝一帶。興化、臨洮、宣光相繼失陷。
至此,短短兩三個月的時間,法軍基本控制了越南北部整個紅河三角洲所有重要城鎮。
山西、北寧失守的消息傳到北京,輿論一片嘩然。慈禧太后極為震怒,將前軍主帥徐延旭革職,后發配新疆。黃桂蘭已自殺身亡,免于追究。但這并不足以平息太后心中的怒火,于是全面改組軍機處。恭親王奕被黜退,他的同事們,寶鋆、李鴻藻、景廉、翁同龢,一概以“委蛇保榮,辦事不力”的罪名逐出軍機處。新的權力班子,以禮親王世鐸、戶部尚書額勒和布和閻敬銘、刑部尚書張之萬、工部左侍郎孫毓汶五人為軍機大臣,貝勒(后為慶親王)奕劻主持總理各國事務衙門,而實際大權掌握在醇親王奕譞(光緒帝生父)的手中。隨后為了表示重整旗鼓,鼓舞士氣,又任命潘鼎新為廣西巡撫,張凱嵩為云南巡撫,要求二人以上到任,進行善后。
(三)《中法會議簡明條款》
1884年4月,法國海軍中校福祿諾通過粵海關總稅務司的德國人德瑤琳,向李鴻章提出談判要求。福祿諾給李鴻章捎了封信,說如果中國承認越南和法國的保護協定,并允許法國人在西南地區通商的話,可以在措辭上顧及大清帝國的顏面,并且可以在軍費賠償上做出讓步,但要是不答應的話,法國就要再派艦隊擴大戰局。這封信,虛虛實實,實實虛虛,要求中國面對現實是實,維護面子是虛;賠償軍費是虛,擴大權益是實。
李鴻章對這場戰爭本來就沒什么興趣,一開始就不主張為了越南去以卵擊石,現在當然愿意和談。于是李鴻章將福祿諾的信轉呈總署,主張立即與法國談判。他說:“若此時與議,似兵費可免,邊界可商。若待彼深入,或更用兵船攻奪沿海地方,恐并此亦辦不到。與其兵連禍結,日久不解,待至中國餉源匱絕,兵心民心搖動,或更生他變,似不若隨機因應,早圖收束之有裨全局?!?/p>
李鴻章對當時敵強我弱的內外形勢的分析并不是毫無道理,但他妥協退讓的對外方針完全迎合了法國侵略者的需要。同時,李鴻章在這種思想指導下與法國人議和,無論如何也不能為國家爭得利益。然而他的這種態度,也恰恰迎合了慈禧太后的意圖。清廷在諭旨中說:“出師護越,越不知感,法又為難,兵連禍結,亦非萬全之策?!?/p>
4月22日,軍機處傳旨李鴻章說“事屬可行,許其講解”,批準了李鴻章與福祿諾議和的建議。
于是,經過短暫的談判,5月11日,李鴻章與法國代表福祿諾在天津簽訂 《中法會議簡明條款》(又稱 《李福協定》)。主要有五款內容:中國承認法國與越南簽訂的條約和對越南的保護權;法國與越南修約時,不出現有損中國體面的字樣;中國駐越清軍調回境內;法國不索賠款,中國在中越邊境開埠通商;三個月后,雙方派遣全權大臣,制定詳細辦法。
《中法會議簡明條款》只是初步協定,具體條款還需要進一步議定。5月17日,福祿諾交給李鴻章一份節略,通告法國已派巴德諾為全權公使來華談判詳細條款,但在中國軍隊撤軍接防問題上,福祿諾自說自話,單方面規定了在越南北部全境向中國軍隊原駐地分期“接防”的日期。
對此,李鴻章既沒有同意,也沒有明確表示反對,而且沒有上報清廷。李鴻章之所以不上報朝廷,關鍵在于雙方對“調回邊界”的理解不同。清廷的理解是清軍調回邊界地區,而不是中國境內,而法國人的理解則是要求清軍撤出越南境內。正因為如此,李鴻章才把這事給瞞了下來,唯恐清廷不同意,導致整個和談功虧一簣。
6月6日,法國政府與越南皇帝阮福明訂立《第二次順化條約》,否定了清朝對越南的宗主權。
(四)北黎沖突
福祿諾的本職工作是海軍艦長,并不是職業外交家,規定撤兵時間本來是重大問題,但他對外交辭令一無所知,在沒有取得任何憑證的情況下,他就把李鴻章的含糊其辭當成了明確的應允。于是他以為事情已經便辦完了,第二天便奉命起程回國,同時通知在越南的法國遠征軍總司令米樂:“中國人答應限期撤軍!”
6月23日,米樂派遣杜森尼中校率領一支九百人的部隊到諒山附近的北黎接防,要求清軍立即退回中國境內。中國駐軍沒有接到由李鴻章代表的清廷的撤軍命令,不敢擅自決定,所以要求法軍等待清廷的回命。爭執之下,杜森尼開槍打死清軍談判代表,并命令法軍炮擊清軍陣地,清軍被迫還擊。戰至深夜,雙方對峙。24日晨,清軍除了以兩營作為預備隊留守駐地外,其余六營全部投入戰斗:三個營守大路正面抗擊,一個營從右側迂回攻擊,兩個營從左側包抄斷敵人后路。法軍三面被攻,被迫收縮,拼死抵御。清軍越戰越勇,正面抗擊部隊聽得兩翼攻擊部隊槍炮聲激烈,立即出擊,極力猛攻,法軍支持不住,被迫潰退。清軍追擊數里后退回駐地。
兩天交戰下來,法軍死傷近百人,清軍傷亡更是慘重。這次事件史稱“北黎沖突”(又稱“觀音橋事件”)。
事件發生后,法中雙方相互指責對方破壞和約,然而事件畢竟是由杜森尼殺害中方談判代表引起的,主要責任顯然是在法國一邊。但是強橫的法國人卻不這樣認為。法國總理茹費理在下議院公開叫囂:諒山之事是中國預謀已久的攻擊和設伏。
6月28日,清政府總理各國事務衙門首席大臣奕劻對前來遞交抗議照會的法國駐中國代理公使謝滿祿明確指出:“諒山是中國駐兵之地……法兵前往諒山,撲我營盤,先行放炮,中兵不能不抵御。”中國政府并再三表示,在《中法簡明條約》之外不存在李鴻章與福錄諾的續約,因此,也不存在中國違反條約之說。
7月12日,法國代理公使謝滿祿向清廷發出最后通牒,限中國立即從越南撤軍,并賠償軍費二億五千萬法郎(約合白銀三千八百萬兩),要求清朝七天之內予以答復。13日,法國新任駐中國大使巴德諾更加露骨地表示:“如果我們在各點上沒有獲得滿足的話,我們絕對是要堅決使用武力的。”同一天法國海軍部長裴龍在發給法國遠東艦隊司令孤拔的電令中說:“派遣你所有可調用的船只到福州和基隆去。以防我們的最后通碟被拒絕,一定要先拿下這兩個埠口?!?/p>
7月14日,法國兩艘軍艦以“游歷”為名,駛進福建閩江口。16日,孤拔也乘軍艦到達閩江口。巴德諾在上海叫囂,如果中國不接受法國的條件,孤拔就要執行最后通牒,消滅福建海軍,摧毀馬尾船廠,占領福州。
清政府雖然認為法國明顯是在無理勒索,但為了避免事態擴大,還是派兩江總督、南洋大臣曾國荃為全權大臣于7月下旬在上海與巴德諾談判。巴德諾咬住二億五千萬法郎的賠款堅決不松口,這離中方最終所能承受的底線——五十萬兩白銀(約合三百三十萬法郎)相去甚遠,于是談判破裂。
戰爭進一步升級,并在中國東南沿海地區和越南北圻兩個戰場上同時展開。