1882年,清政府被迫簽訂《中俄伊犁界約》等一係列不平等條約,被割走中國東北、西北共150多萬平方公裏領土。1884年,西方殖民大國齊聚德國,召開瓜分非洲的柏林會議,掀起了搶占非洲土地的狂潮。次年12月,印度國民大會黨在孟買成立,要求實行政治改革。
第二次鴉片戰爭後,法國加緊了對越南的侵略,以便占領越南後,進而侵略中國。1883年8月,法國派軍隊攻占了越南都城順化,強迫越南政府簽訂了《順化條約》,規定越南的一切對外交涉都由法國掌管等。接著,12月11日,法國侵略軍突然進攻駐紮在越南山西的中國軍隊,中法戰爭爆發。
麵對法國對越國的侵略,清政府內部雖然出現了主戰和主和兩派,但因為主和派掌握著實權,對外實行妥協退讓的政策,這不能不使中國陷入被動挨打的局麵。
法軍向越南山西發動進攻後,越南邊境的劉永福率領黑旗軍奮力還擊,但由於駐守北寧的桂軍臨戰觀望,滇軍又行動遲緩,致使黑旗軍孤軍奮戰。傷亡較大。12月16日,法軍攻陷山西,黑旗軍與滇軍被迫退守興化。1884年3月,法軍援軍到達,又擴大了侵略。12日,法軍占領北寧,19日攻占太原,4月12日,又攻陷了興化。至此,法國侵略軍占領了紅河三角洲的全部地區。這使得清政府非常恐慌,在法國侵略軍的武力威脅下,5月11日,清政府派李鴻章與法國海軍中校福祿諾在天津簽訂了中法《簡明條約》。根據條約,中國承認越南成為法國的保護國,中國將駐守在越南的軍隊全部撤回邊境,中越邊界開放通商等。
《簡明條約》的簽訂激起了全國人民的強烈不滿,清政府迫於輿論的壓力,沒有立即撤回在越南的軍隊。1884年6月,法國侵略者強迫中國駐軍撤出諒山陣地,並炮轟中國駐軍陣地。清軍被迫還擊,擊退法軍,打死打傷法軍近百人。法國以此為借口,要求中國軍隊立即撤回,並向法國賠款等。清政府在敵人的敲詐下,為避免和局破裂,同意撤軍,並派曾國荃到上海與法國代表談判。
8月5日,法國軍艦又炮轟台灣基隆炮台。當地守軍奮力反擊,於6日大敗法軍,法軍被迫狼狽撤退。法軍進攻台灣基隆不成,轉而集中力量進攻福州。其實,從7月中旬起,法國多艘軍艦就已經陸續闖入了福州東南的馬江港,監視港內中國海軍行動,並時刻準備進攻中國海軍。然而,負責指揮福建海軍的張佩綸等人根據清政府不主動進攻的政策,任憑法國軍艦進入港內,命令中國軍艦不準先開炮,這些都注定了馬尾海戰的慘敗。
8月中旬,上海談判失敗,清政府命令沿海各省加強防備,但是仍然要求不能主動出擊。23日下午1時3刻,法軍突然向福建海軍發動襲擊,當場擊沉兩艘軍艦。福建海軍被迫倉促應戰,一部分官兵奮起還擊。福建海軍旗艦“揚武”號用尾炮準確擊中法國侵略軍旗艦“伏爾泰”號,但很快被法軍魚雷艇發射的魚雷擊沉。“福星”、“振威”等炮艦也部向敵艦放炮,奮力抵抗,重創敵艦,最後都被敵艦擊沉,艇上官兵壯烈犧牲。此次海戰,福建海軍損失慘重,7艘軍艦被擊沉,其餘軍艦也都被擊毀,將士死傷700餘人。8月24日,法國軍艦又炮轟了馬尾船廠、馬江兩岸炮台以及附近的帆船、舢板等。
馬尾海戰的慘敗,是清政府執行妥協投降政策的結果。它給了清政府以沉重打擊,激起了中國人民對法國侵略者更大的憤怒及對清政府更大的不滿。各地人民要求反抗法國侵略者的呼聲,迫使清政府撤銷了張佩綸等人在福建的職務,任命左宗棠為欽差大臣督辦福建軍務。同時,也迫使清政府於8月26日正式向法國宣戰,命令沿海清軍加強防禦,嚴防法國海軍再次入侵,命令各路陸軍迅速在越南戰場向南進發,對法國侵略者展開反攻,收複失地。同時,公開表示支持劉永福及其領導的黑旗軍,授予劉永福為記名提督,對法軍作戰。從此,中法戰爭形勢逐漸朝著有利於中國的方向發展。