看到黑旗軍已經亂作一團,此時劉永福卻接到一封神秘的指示——“不計較一城一地的得失,夜襲浮沙要塞!”
劉永福果然照搬,當晚便組織部隊,連續發動偷襲,槍炮、火箭、大刀,無所不用。駐守浮沙要塞的法軍不願意進行夜戰,堅守不出,接連3次打退黑旗軍的進攻。至淩晨,天色破曉,已不具備偷襲的條件,黑旗軍退卻。這次夜襲,黑旗軍雖損失5、60人,雖然沒能攻克要塞,卻生俘了20名阿爾及利亞兵以及5名法國海軍登陸隊,也可謂是驚人的戰果。天明之後,25名戰俘按照當時黑旗軍的習慣做法,全部斬殺。(好吧,我們姑且承認這不是特別人道的做法!)
天色破曉之後,山西城下進入了奇怪的停火狀態,雙方都在各自收拾戰場。黑旗軍困守山西城,法軍守著浮沙要塞,直到第二天上午,劉永福仍試圖采用前天迂回攻擊法軍第一旅隊的方法,集中黑旗軍剩餘兵力衝出城外,向第一旅右翼迂回進攻。已經熟悉了黑旗軍這種打法的法軍,海陸配合,阿爾及利亞兵與“雎鳩”號的哈乞開司機關炮輕鬆了打退了這支黑旗軍。與此同時,法軍全線開始向山西城前進,所有的行營炮連都重設陣地,與東京分隊軍艦一起向山西城猛烈炮擊,“細彈雨落,遍撒內城”。
當天下午,夕陽西下,阿爾及利亞營已經挺進至距山西城外城門僅100米處。隨著孤米樂一聲令下,衝鋒號四處響起,以阿爾及利亞營為首,首先攻破了西門。出於報複心理,對城內所有的活人,非洲軍團采取了格殺勿論的態度,一路屠殺進了山西城。駐防山西城的越南官軍已經豎起白旗,而黑旗軍早已棄城後撤。控製山西城外城後,孤拔見到天色已晚,覺得“在一片漆黑之中深入一個陌生城市緊追窮寇,未免失之輕率”,下令全軍就地駐守,防止黑旗軍乘夜色反撲,準備第二天再進攻山西的內城。
第二日清早,幾名阿爾及利亞兵和越南雇傭兵,冒失地走近內城牆根,推了推山西城內城的北門,未能想到,城門竟應聲而開,這時才發現內城裏麵已經是空空蕩蕩,隻剩下一些小聲哭泣的婦孺老弱。絲毫沒有準備的法國兵們頓時感到手足無措,但誰都不願錯失首先攻進山西內城的光榮,於是用一條阿爾及利亞兵的紅腰帶,一條越南雇傭兵的藍色腰帶,以及一名軍官貢獻出來的白手帕,編成了特殊的三色旗。在這麵旗幟的注視下,孤拔在全軍官兵的歡呼中進入山西內城,法國人終於獲得了一場真正的大勝利。黑旗軍在法國人心中造成的陰影,至此一掃而空。
唯一讓孤拔和米勒不爽的是黑旗軍居然毫無蹤影,真是支善於逃跑的土匪軍啊,法國人如此感慨。
法軍稍作休整,便乘勝追擊,直撲黑旗軍的大本營——北寧城。
法國東京遠征軍第1、2旅分別從河內與山西出征,經過近6天的行軍和進攻行動,法軍掃清了通往北寧陸上的越軍據點,越軍此時早已是不堪一擊,而一路上又絲毫不見中國軍隊的影子,法軍進展神速,一周後就在北寧城附近會合。