戰鬥過程
1884年3月7日下午,法軍開始行動。米樂、波里也率第一旅由河內出發,於當夜渡過紅河,揚言由嘉林波新河沿大道向北寧前進。實際上,米樂決定避開清軍設防堅固的正面,從翼側進攻北寧。3月8日晨,法軍從兩個方向同時進軍:尼格里率第二旅從海陽出發,乘船沿太平江北上;米樂、波里也則以一部兵力佯攻新河,主力沿新河南岸向東疾進。水陸兩路各六千人左右。同日上午,法軍第二旅主力在艦炮掩護下,由扶朗兩側登入,圍攻駐守該處的四營清軍。當地天主教民也四出回響,為虎作倀。守軍憑藉炮台工事抵抗,並派人赴北寧乞援。黃桂蘭派出的三營清軍於半路得悉扶朗已失,折回北寧。扼守扶朗的清軍向西退至桂陽時,黑旗軍一部趕到,與之併力堵截法軍,使其前進受阻。黃桂蘭調扼守三江口一帶的黨敏宜所部八營回防北寧;黨敏宣避戰自保,拒不執行命令。
3月11日,法軍第一旅在北寧東南方向渡過新河,與第二旅會合,準備次日從北、東、南三面會攻北寧。
3月12日,法軍第二旅一部在艦炮火力支援下,向桂陽、春水等地進攻;第一旅迅速向西機動,從北寧南面發起攻擊;第二旅另一部由水路繞至城北,企圖奪占涌球(今答求,北寧東北四公里),切斷清軍後路。涌球對北寧的防禦有重要作用。據當時隨軍者記述:該處“有河寬十丈,深八尺,輪船可至河邊。有土山兩座,商民無不言,敵若據此山,將開花炮近指入城,點滴不差,晝夜不絕,則城斷難守”。可是,黃桂蘭只派陳朝綱兩營守涌球,直至3月11日,才調黑旗軍千人加強該處防禦,並挖地營(有被覆的野戰掩體)十座。但是,第二天早晨黃又突然變計,將黑旗軍調離涌球。就在這天下午,法軍第二旅輕取涌球,“曳炮阜頂,俯擊北寧城。彈三落,城市嘩奔,越官張登憻等開城遁”。正在城外督戰的黃桂蘭、趙沃見情況緊急,竟放棄指揮,分別向諒江、太原方向逃跑,清軍頓時全線潰散。黑旗軍及少數清軍試圖抵抗,因大勢已去,不得不撤往太原。黑旗軍不久又從太原返回興化。
3月15日起,法軍分路追擊清軍。至19日,諒江、郎甲(今蓋夫)、太原相繼失守。東線清軍被迫退至山區,大部潰散,餘部集結於諒山、鎮南關一帶。
4月初,法軍為轉移兵力奪取興化,主動放棄太原,僅以少數兵力在郎甲一帶築壘防守,主力經河內向山西集中。岑毓英聞風喪膽,隨即將滇軍主力後撤至保勝、河口一帶,於是,興化、臨洮、宣光一線不久就被法軍占據。至此,法國侵略軍達到了占領紅河三角洲全部重要城市的戰略目的。