1896年4月15日,中華帝國海軍南中國海艦隊(後麵簡稱南海艦隊),在安南北部的海防港殲滅法國遠東艦隊主力,將製海權控製在手中,並於同日攻克產煤重鎮鴻基。
1896年4月17日,劉永福率領的中國遠征軍經過艱難跋涉,終於穿越了中越邊境的崇山峻嶺,經過短暫休整,次日占領安南東北部重鎮太原(越南也有個太原)。
1896年4月19日,遠征軍進入紅河平原,經過兩天激戰,21日攻克河內,法屬印度支那總督倉皇逃離,與敗退的法軍一起,向清化方向撤退,劉永福親自率軍緊追不舍。法軍敗退到清化後不敢停留,在天黑前撤出清化,向南方的榮市撤退,因怕黑夜中遭遇伏擊,以及遠征軍將士過於疲憊,劉永福占領清化後暫時停止了追擊法軍的腳步,在清化休整,等待主力前來彙合。
1896年4月22日,中國遠征軍主力到達清化,由原黑旗軍悍將嚴雲龍為前鋒,遠征軍開始向安南中部地區進軍。
1896年4月23日,嚴雲龍部在榮市再次大敗法軍,法軍丟失榮市後繼續向南逃竄,法屬印度支那總督在數十名親衛的保護下,離開敗退的法軍大隊逃往萬象(老撾首都)。
1896年4月24日,中國遠征軍到達安南中部城市同海,由於駐守這裏的法軍已經逃走,遠征軍一槍未放即占領該城。至此,中國遠征軍從4月6日開始,已連續作戰十八天,由於部隊過於疲勞,中國遠征軍總司令劉永福決定全軍原地補充休整三天,嚴雲龍在遠征軍統帥劉永福的嚴令下,停止了對法軍的追擊。
1896年4月25日,中國海軍南海艦隊的四艘巡洋艦出現在安南中部的重要港口峴港海域,在與法軍駐守的岸防要塞和炮台進行了短暫的交火後撤離。
1896年4月26日,中國海軍再次出現在峴港,這次南海艦隊的旗艦天津號出現在了艦隊的戰列當中,在天津號戰列艦三百五十五毫米主炮的壓製下,峴港海防炮台全無還手之力。南海艦隊向峴港海防要塞進行了三個小時的炮擊,在擊毀兩座炮台,重創兩座炮台後,中國艦隊再次消失在了茫茫大海上。
1896年4月27日,中國海軍艦隊主力齊集峴港,由於這次有補給艦隨行,中國海軍的炮擊進行了整整一個白天,在隆隆的炮聲中,峴港北方屏障漢島炮台被擊毀,位於港區南側的山茶半島要塞也淹沒在一片火海之中。(看小說就到葉 子·悠~悠 YZuU)
1896年4月28日,中國遠征軍開始了新一輪攻勢,集中全部主力,向盤踞在安南古都順化的法軍發起猛烈進攻。同日,中國南海艦隊再次炮擊了峴港,由於法軍岸防炮台損毀嚴重,已
不能有效的阻擋中國艦隊的攻擊,位於港灣東部的軍港和法軍駐地遭到了猛烈炮擊,一直龜縮於港內不敢應戰的法國遠東艦隊殘部,兩艘老式撞擊巡洋艦及六艘炮艇、四艘魚雷艇全部被擊毀擊沉在港內,軍港碼頭及軍營、倉庫等重要目標損毀嚴重。
1896年4月29日,中法兩軍在順化的戰鬥進入白熱化,收攏了河內、清化、榮市、同海各處敗兵的法軍,共一萬一千七百人,糾集安南偽軍兩萬餘人,與兩萬中國遠征軍激戰不止,雙方在順化的外圍防線上反複爭奪,戰鬥從上午八時開始,到下午四時二十三分,中國遠征軍占領安順鎮,突破了法軍設置於順化西北方的防線,順化外圍防線崩潰,法軍及安南軍全部撤入順化城內。同日,中國海軍繼續轟擊峴港沿岸的炮台及要塞,從港灣北漢島炮台方向殺入港內,炮擊了海灣西側及河口的商港,擊沉三艘法國商船後,由港灣南側山茶半島離去,並再次用燃燒彈點燃了東麵的軍港和山茶半島要塞。
1896年4月30日,中國遠征軍在一百門火炮的掩護下,從北麵向順化城區發起強攻,退入城中的九千多法軍和一萬七千餘安南軍,倚仗順化的老城牆和護城河進行了頑強的抵抗。遠征軍吳彭年部於下午二時攻克順化西麵的玉屏山法軍陣地,開始猛攻順化西城牆。當天,中國南海艦隊在攻擊峴港山茶半島要塞的同時,掩護兩艘運兵船發動了登陸作戰,兩千海軍陸戰隊在戰艦炮火的掩護下成功登上山茶半島,開始驅趕要塞中殘存的法軍。