山西、北宁之败后,清廷发生了“甲申易枢”事件,慈禧太后以军事失败为由将奕诉为首的军机五大臣统统逐出军机处,另以礼亲王世铎为领班大臣,组成新的军机处,又命奕勖主持总理衙门,谕令醇亲王奕最会同商办军机要政。这样,军机处就完全掌握在慈禧心腹手中。同时,清廷将徐延旭、唐炯等革职查办,以署湖南巡抚潘鼎新为广西巡抚,以贵州巡抚张凯嵩为云南巡抚,主持前线军务。在整军备战的同时,清政府并没有放弃和平谈判的努力,为此,以李风苞接替主战的曾纪泽为驻法公使,为和谈铺平道路。四月,李鸿章与法国海军中校福禄诺在天津签订了《中法简明条约>,承认法国占有全部越南。
马尾海战
6月23日,法军900人在陆军中校杜森尼率领下北上,行抵北黎(今北丽)时,法军炮击清军阵地,被守军击退。法国政府趁机借口“北黎冲突”扩大事端,要求清军撤出北圻,并索要巨额赔款。清廷立即严令沿海各省“静以待之”,但不得先发开衅,实行消极防御;外交上则以两江总督曾国荃为全权代表,与法国公使巴德诺在上海举行谈判。
五月七日起,法军八艘军舰在海军中将孤拔统率下闯入闽江口,进泊马尾港(福建海军和福州船政局均在此港)。负责福建军务的钦差会办福建海疆事宜大臣张佩纶、闽浙总督何璟、福建船政大臣何如璋等居然给敌军以友好款待,下令严禁清军开炮攻击。法规人马尾后,日夜监视港内的福建水师,不许其移动,声盲动则开炮。
六月中旬,法海军少将利士比率3艘军舰炮击台湾基隆港,企图抢夺当地煤矿,被督办台湾军务的刘铭传指挥下的清军击退。此后,法国向清政府发出最后通牒,要求清廷为北黎事件赔款8000万法郎。总理衙门拒绝了法国无理要求,并中止了两国在上海的谈判,法署使谢满禄遂下旗出京。同时,清朝驻法公使李风苞也离开巴黎,两国外交关系破裂。
清廷随后令沿海沿江各省严行戒备,增强马江一带的军事力量,但并未解除不得主动攻敌的禁令。与此同时,法军决定在马尾军港发起进攻。8月23日上午,法国驻福州副领事将当天开战的决定通知清方,而何璟、何如璋、张佩纶等却不能当机立断,直至战机紧迫才匆忙下令备战。下午,法舰趁落潮之机发动攻击。福建海军仓促应战,处境极为不利。有的军舰朱及起锚就被击沉,有的起火焚烧,海军官兵奋勇还击,战斗进行半小时后,福建水师十一艘舰艇全被击沉,将士伤亡700余人,福建海军全军覆没。法军只有两艘鱼雷艇遭到重创,死伤仅30余人。翌日,法舰又轰毁了马尾造船厂。随后驶向下游,逐个轰击闽江两岸炮台,两岸炮台由于只能向下游一方发射,结果全部被毁。法舰出江口后退至马祖澳(今定海湾)。
马尾海战后,清廷于8月26日对法国宣战,并确定了沿海防御、陆路****的战略方针,同时撤换张佩纶、何如璋等福建前线大吏,另以左宗棠为钦差大臣督办福建军务。法国鉴于与英美列强间的矛盾,没有对清廷宣战,但决定海路夺取台湾北部,陆路进攻谅山,迫使清政府屈服。
9月30日,孤拔率5艘军舰到达台湾基隆海面。翌日,向基隆守军发动进攻。当时,刘铭传闻淡水(今台湾新竹)正遭法规攻击,形势严重,率主力往援,致使法军轻易便占领了基隆。
清军在淡水共9个营,守将孙开华进行了积极严密的布防。10月2日,清军率先开炮,双方展开激烈的炮战。10月8日,法军在基隆部队增援下利用炮火掩护于北岸海滩登陆,扑向清军炮台,当逼近丛林时,遭清军围歼,法军大溃,被歼百余人,其余逃回海上,经过此役,侵略军再也不敢贸然进犯淡水。
10月23日,法国宣布对台湾实行封锁。为此,清政府从南洋海军中抽出5艘军舰,由提督衔总兵吴安康统领,自1885年1月18日南下援台。2月12日,援台舰队与孤拔所率7艘法舰在浙江石浦洋面遭遇。吴安康不及开战即率队逃跑。法规追踪而来,用水雷将逃匿于石浦港中的“澄庆”、“驭远”两舰击沉。随即北犯镇海,以消灭避于该处的另三艘清舰。光绪十一年(1885年)正月,法舰两次进犯招宝山都被清军击退。以后,法军又多进行夜袭和鱼雷攻击,均告失败。孤拔被迫率舰队退踞澎湖,不久即死在那里。
第二次北圻之战
在北圻地区,清军决定两路****,东线进攻谅山、太原;西线进攻宣光、永祥;两军会师后合取北宁、河内。法军由波里也接替米乐为远征军总司令,决定在西线坚守宣光、兴化等地,东线力取谅山。
东线清军在广西巡抚潘鼎新指挥下顺利进占郎甲、船头(今陆岸)后,即采取消极防御、分口把守的方针,滞留于谅山一带,致使丧失攻敌之良机,使法军得以从容结集兵力。结果在法军****下,郎甲、船头失守,清军撤回谷松。12月中旬,法军主力7000余人从船头出发猛扑广西边境,谷松、委坡(谅山南35里处)相继陷落,潘鼎新率部连夜逃离谅山入关,法军未放一枪