청불 전쟁

청불전쟁(淸佛戰爭) 또는 청프 전쟁(, , )은 1884년 8월에서 1885년 4월까지 베트남 북부의 통킹을 프랑스가 차지하기 위하여 벌인 전쟁이다. 이 전쟁은 베트남에 대한 청나라의 종주권을 놓고 프랑스와 청나라 사이에 벌어진 전쟁이기도 하다. 
프랑스의 식민지 쟁탈전의 하나로서, 19세기 후반부터 프랑스는 베트남 공략을 적극화하여 1874년 〈제2차 사이공 조약〉을 체결, 베트남 남부 6성을 할양받음과 동시에 베트남을 보호국으로 삼았다. 이에 대해 청나라는 종주국으로서 조약의 무효를 선언하는 한편, 베트남 북부에 군대를 파견하여 중국 의용군인 '흑기군'과 연합하여 프랑스와 전쟁을 벌였다. 그러자 프랑스 함대는 타이완과 푸저우의 항구를 포격하고 청나라 복건함대를 패퇴시키고, 청나라의 군함들을 격침시키는 등 청나라해군을 압도했다. 그 결과 1885년 6월 청나라 조정은 톈진에서 강화조약을 체결하여 베트남에 대한 프랑스의 보호권을 인정했다.
프랑스의 베트남 진출.
18세기 중엽에 프랑스는 인도에서 영국에게 패한 이후 베트남으로 진출하게 되었다. 당시 베트남은 남북 대립시기로 북쪽은 하노이에 여씨(黎氏)가, 남쪽에는 후에에 응우옌 왕조 세력을 잡고 있었다. 그런데 1777년에 또다른 응우옌 씨가 후에를 빼앗고 하노이 마저 차지하였다. 이에 처음부터 후에에 있었던 응우옌이 프랑스 선교사를 통하여 프랑스에게 도움을 요청하였다. 프랑스는 영토 할양과 프랑스인의 거주, 왕래, 상무의 독점 등 특혜를 조건으로 내세워 원조하기로 하였으나, 프랑스의 별다른 도움 없이 1802년에 후에의 응우옌 왕조가 다시 일어나 마침내 베트남 전역을 통일하였다. 
프랑스는 혁명 이후 베트남의 경영문제에 대하여 적극적인 자세로 나왔다. 이에 베트남도 프랑스의 태도를 보고 경계하기 시작하여 쌍방의 관계는 악화되었다. 1858년 나폴레옹 3세는 영국과 함께 제2차 아편전쟁을 치르면서 베트남을 압박, 사이공 등지를 점령하였다. 그리하여 1862년에 베트남은 프랑스의 압력으로 비엔호아, 자딘, 딘뜨엉 등 3성의 할양, 배상금 지불과 메콩강의 항해, 포교 특권을 인정하고, 또한 베트남이 다른 나라와 교섭할 때 프랑스 황제의 동의를 받도록 하는 불평등 조약 내용의 〈사이공 조약〉을 체결하였다. 
프랑스의 베트남 진출은 베트남을 지배하려는 목적이었다. 이에 1867년에 프랑스는 코친차이나를 병탄하고 메콩강을 통해 운남으로 진출하려고 하였으나 그 상류로는 항해가 불가능하였다. 그런데 1871년에 프랑스의 모험가 뒤퓌(Jeon Dupuis)가 홍하를 통해 운남에 도달할 수 있다는 사실을 발견했다. 프랑스는 이를 통하여 중국으로 진출하려고 1873년 11월에 군대를 동원하여 하노이, 하이즈엉, 닌빈 등지를 공격하였다. 
베트남은 프랑스의 공격을 받게 되자 '흑기군'을 불러들여 공동으로 프랑스에 대항하려 하였다. 그러나 베트남은 프랑스의 외교적인 압력아래 사이공에서 1874년 3월에 평화와 연맹조약(이를 〈제2차 사이공 조약〉이라고도 한다.)을 체결하였다. 그 내용은 다음과 같다.
결과적으로 이 조약은 베트남을 독립국으로 인정하는 대신 기존 중국의 베트남에 대한 종주권을 부인하는 것이었다. 
앙리 리비에르 탐험.
프랑스가 베트남 북부에 관심을 가지된 계기는 해군 장교 앙리 리비에르의 돌출 행동에 의해서였다. 1881년 말, 앙리는 현지 프랑스 상인에 대한 베트남의 반발을 조사하도록 명령받았다. 그는 소규모의 군대를 데리고 하노이로 찾아가서 상관의 명령을 무시하고 독단으로 응우옌 왕조의 군대가 지키는 하노이 성을 점령하였다. 이후 하노이 성은 응우옌 왕조에 반환되었지만, 리비에르의 점령 행위는 응우옌 왕조와 그들을 비호하는 청나라에 경각심을 주었다. 그러나 응우옌 왕조는 약체였으며, 프랑스군을 밀어낼 힘이 없었다.
프랑스에 맞섰던 세력은 이미 무너지고 있는 응우옌 왕조군이 아니라 흑기군이었다. 1873년, 흑기군은 코친차이나 주둔군 장교 프란시스 가르니에의 부대를 괴멸시켰다. 가르니에는 리비에르와 마찬가지로 상관의 명령을 무시하고 북베트남에 군사를 향해 하노이 요새에서 흑기군 부대에 습격당해 패배했다. 이 전투에서 가르니에도 전사했고, 프랑스는 베트남에서의 패배를 은폐하려 했다.
또한 응우옌 왕조는 종주국인 청나라에 지원을 요청했다. 비호 국가에 진출하는 프랑스에게 불쾌감을 품고 있던 청나라는 겉으로 적대하고 있던 흑기군에게 무기와 자금을 지원하여 통킹에서 프랑스 적대 행위를 후원했고 프랑스의 베트남 진출에 대해 경고했다.
통킹 전쟁.
1882년, 운남 등 지역에서 주로 동원된 청나라의 원정군이 베트남에 들어가 랑선 등 통킹의 중요 거점에 속속 주둔을 시작했다. 프랑스 정부의 대표로 청나라에 체류하고 있던 주재 공사 프레데릭 부레는 1882년 11월과 12월에 이홍장과 협상을 통해 (응우옌 왕조와는 무관하게) 통킹을 청나라와 프랑스가 양분하는 협정(톈진 협약)을 맺고자 분주하게 움직였다.
한편 리비에르는 부레가 소극적인 태도를 보였다고 생각했고, 1883년에 흑기군, 청군, 응우옌 왕조군과 결전을 할 수 있도록 520명의 병사를 데리고 진격을 재개했다. 3월, 남딘성 전투에서 200명의 적병을 쓰러뜨리고 승리를 거두었다. 리비에르는 장비 차이에 의한 전력 우위를 확신했다. 이어 베트남 조정의 반격으로 벌어진 하노이 성 근교에서 발생한 자꾹 전투에서도 승리를 거두었다. 리비에르의 작전 타이밍은 완벽했고, 남딘성 점령이라는 징계를 각오한 행위를 했다. 그 직후, 프랑스 본국에서는 식민지 확대를 새로운 외교 정책으로 내세운 쥘 페리 정권이 들어섰다. 페리 정권은 부레의 강화 방안을 강하게 비판하면서 부레를 공사에서 해임했고, 더불어 리비에르의 군사적 독단을 영웅적 행위로 칭찬했다.
1883년 4월, 청나라군의 당경숭 장군은 사기가 낮은 응우옌 왕조 군에게 상황이 불리하다고 판단했다. 그는 토벌 대상이던 유영복을 설득하여 흑기군에 의한 공세를 계획했다. 1883년 5월 10일, 3,000명의 흑기군이 프랑스군을 공격했다. 5월 19일, 양군은 하노이 근교의 꺼우저이 지역에서 충돌했다. 550명의 프랑스 병사는 꺼우저이 지역에 걸쳐 있는 다리(紙橋)에 진지를 구축한 흑기군에 반격을 받아 지휘관 리비에르가 전사하고 패주했다.(꺼우저이 전투)
그러나 이미 리비에르의 행동은 쥘 페리 정권의 지지를 얻고 있었다. 프랑스군은 즉시 대규모 증원군을 파병하기 시작했고, 이후 청나라를 끌어들이게 되는 전면전으로 발전했다.
프랑스의 증원군 파병.
1883년 8월 20일, 프랑스군의 증원군 지휘관이 된 아메데 쿠르베 제독의 증원군이 베트남에 상륙하여, 응우옌 왕조 군에 엄청난 피해를 주었다.(투언안 전투) 프랑스군의 본격적인 침공 전에 뜨득 황제의 죽음으로 혼란한 응우옌 왕조는 〈계미 조약〉(후에 조약)을 체결해 사실상 프랑스에 항복한 것이다.
기세를 탄 프랑스군은 다이강에 주둔하고 있던 유영복의 흑기군에 공세를 가했다. 그렇게 시작된 푸호아이 전투와 팔란 전투에서 일정한 피해를 주었지만 격렬한 저항을 받아야 했다. 두번에 걸친 대규모 공세에도 불구하고, 다이강에서 흑기군을 쫓아내지 못했다. 유럽 국가에서는 ‘프랑스군의 고전’이라고 악평을 했고, 다급해진 프랑스 정부는 1883년 9월 공세 실패를 이유로 육군 사령관을 해임했다. 결국 흑기군은 다이강이 범람했기 때문에 선떠이강 부근의 진지로 후퇴했다.
프랑스는 연말에 흑기군을 괴멸시키기 위한 대공세를 계획하면서, 흑기군을 후원하고 있는 청나라에 단독 강화를 타진하기 시작했다 (반면에 다른 유럽 주요 국가에도 참전을 촉구하고 다녔다). 그러나 청나라 정부는 프랑스 주재 공사 증기택으로부터 “프랑스는 전면전에 나설 용기가 없다”는 보고를 받았고, 프랑스 주청공사와 이홍장이 진행하던 협상을 중단했다. 프랑스 정부는 파리의 증기택과 공사와 폴 아르망 샤르멜 라쿠르 외무 장관 회담을 진행시켰지만, 외교적 진전은 보지 못했다.
선떠이강, 박닌 전투.
프랑스 정부는 초조해졌고, 청나라는 전선에서 철군을 거부했다. 청나라는 양이 운동이 각지에서 발생했고, 특히 운동이 성행했던 광동성의 광저우 등지에서는 프랑스뿐만 아니라 유럽 상인 전체를 습격하는 사태가 발생했으며, 각국이 자국의 국민을 보호하기 위해 포함을 파견했다.
청나라와 직접적인 전쟁을 예상한 프랑스는 독일에 제조를 위탁한 진원 · 정원의 건조를 늦추도록 요청했다. 전선에서는 통킹 삼각주에 여러 개의 새로운 거점을 확보해 세력을 확장했다. 흑기군과의 전투가 다가왔고, 청나라와도 싸울 것이라고 예상했지만, 조기에 통킹 전역을 병합하면, 청나라가 영유권을 인정할 수 밖에 없을 것이라고 판단했다. 통킹에서 새로운 공세를 펼치기 위해 쿠르베 제독을 총사령관으로 임명하고, 1883년 12월에 1만이 넘는 대군이 선떠이강을 향해 공격을 시작했다.
선떠이 전투는 최대의 격전이었다. 청군과 베트남 병사들은 싸움의 추세에 그다지 관여하지 않았고, 3,000명의 흑기군이 주력이 되어 전투를 벌였다. 12월 14일에 프랑스군의 공세를 일단 격퇴했다. 흑기군이 쿠르베 군의 추격에 실패하자, 군을 재정비한 쿠르베는 대포의 엄호를 받으며, 12월 16일에 선떠이강으로 두 번째 돌격을 감행했다. 이날 오후 5시 프랑스군 외인부대와 해병 부대의 일부가 선떠이강 방어선을 돌파하여 시내에 돌입했고, 유영복은 남은 군사를 데리고 선떠이강 후방으로 철수했다.
프랑스군은 수백 명의 사상자를 냈고, 반면 흑기군은 절반 가까운 병사를 잃었다. 청군과 베트남군을 합치면 프랑스군을 웃도는 숫자였지만, 그들은 이 전투에 참여하지 않았다. 유영복은 두 나라로부터 버림받은 것을 깨닫고 분노했고, 이후의 싸움에는 적극적으로 관여하지 않았다.
1884년 3월, 프랑스군은 샤를 테오도르 밀로 장군을 아메데 쿠르베를 대체할 새로운 총사령관으로 임명하고, 사태를 호전시키려 했다. 전력은 2개 여단으로 증강되었다. 1여단은 세네갈 총독 루이 브리에르 드 리즐 소장, 2여단은 알제리의 이슬람 반란을 진압한 프랑수아 드 네그리에 소장이 여단장을 맡았다. 프랑스군은 작전 목표를 청나라 광서군이 수비하는 박닌으로 설정하고, 공격을 재개했다(박닌 원정). 이번에는 청나라군이 주체였지만, 사기가 낮은 광서군은 형식적인 저항을 하다가 철수했다. 양군 총 3만 명(프랑스군 1만, 청군 2만)의 대회전이었지만, 양자의 피해는 불과 100명 정도에 그쳤다. 흑기군이 전력을 보존하기 위해 적극적으로 참여하지 않았던 것도 박닌 점령을 용이하게 했다. 밀로 장군은 박닌에 남겨진 몇 문의 크루프 강철 대포를 접수했다.
청불 전쟁 발발.
청군이 성과를 내지 못했기 때문에 대외 강경파인 장지동 등의 힘이 떨어졌다. 프랑스군에 의해 흥화와 타이응우옌이 함락되자, 이홍장 등 온건파가 한층 힘을 갖기 시작했다. 서태후는 톈진에서 이홍장과 사령관 대리 프루니에와 협상을 재개할 것을 명령했다. 1884년 5월 11일, 청군의 철수 · 통킹 분할 무역로의 확정 등을 동의한 〈톈진 협약〉(간명 협약, 리 - 프루니에 협약)이 체결되었다. 청나라 프랑스 의한 코친차이나 · 통킹의 식민지도 추인 각지에 프랑스군이 주둔하는 것을 묵인했다. 그러나 정전 협정에는 결함이 있었고, 청군의 철수 시기가 명시되지 않았다. 프랑스는 청군의 즉각적인 철수를 요구했지만, 청나라는 조약의 이행에 달려있다고 거절했다. 철군 문제로 양국은 대립은 격화되었고, 청나라 내부에서는 전쟁 재개를 주장하는 강경파 정치인들뿐만 아니라, 개인적인 원한을 품은 옹동화 등이 가세하여 이홍장의 해임을 요구했고, 게다가 비밀리에 군대를 전선으로 이동시켰다.
6월 6일, 프랑스 공사 쥘 파트노트르가 응우옌 왕조의 대표 응우옌반뜨엉(阮文祥)과 《톈진 협정》을 새롭게 체결했다. 같은 시기 6월 프랑스군은 청군이 랑선에서 철수한다고 생각하고 주둔 부대를 내보냈다. 6월 23일, 박레 지방을 통과한 프랑스군은 통행을 방해하는 광서군 분견 부대와 조우했다. 프랑스군은 청나라군 측에 최후 통첩을 들이대며 공격을 시작했고, 박레 전투(박레 매복)에서 반격을 받고 패주했다.
이 사건 이후 프랑스 본국에서는 개전론이 높아졌다. 쥘 페리 정권은 청나라에 사과와 배상을 요구했지만, 청나라는 협상에 동의했지만, 배상과 사죄는 거부했다. 양국의 대립은 깊어졌고 협상은 결렬되었다. 프랑스군은 쿠르베 제독의 함대를 복주로 이동시켜 청나라 해군의 복주선정국에 대한 공격을 준비하라고 명령했다.
1884년 8월 5일, 프랑스 해군은 타이완 지룽만에 있는 석포만에 포격을 해서 3대의 해안 포대를 파괴하고 기륭에 해병 부대를 상륙시켰다. 그러나 유명전이 지휘하는 청나라군이 원병으로 왔기 때문에 철수했다. 이에 따라 양국은 사실상 전쟁 상태로 돌입했고, 청불 전쟁이 발발했다.
청조의 대응.
청나라는 베트남에 대한 종주권을 상실하게 되는 이 조약(제2차 사이공 조약)에 대해 즉시 거부하는 입장을 표했다. 한편, 프랑스는 이무렵 보불전쟁에서 패한 이후 점차 국력을 회복하여 베트남에 대한 적극적인 진출을 꾀했다. 1881년에 프랑스 의회는 240만 프랑을 베트남에서 군비로 사용하도록 승인하여 1882년초에 프랑스 교지지나 해군함대 사령관 앙리 리비에르가 4월에 하노이를 점령했다. 그리고 다음해 1883년에는 흑기군에 대한 공격을 시작하였다. 
당시 러시아에 있던 증기택은 프랑스의 야심을 간파하고 총리아문에 베트남 문제의 해결방안을 제시하였다. 즉 베트남의 대표를 베이징에 장기적으로 파견하도록 할 것과 베트남인을 프랑스에 파견하여 중국공사관의 수행원으로 임명할 것, 베트남에게 중국의 명령에 따르도록 하여 홍하 등의 개방을 건의하였다. 그러나 이홍장은 '홍하의 개방은 오히려 호랑이를 끌어들이는 것과 같다'고 하여 이를 받아들이지 않았다. 
청나라가 베트남 문제로 프랑스와 대립하게 되자, 유곤일은 베트남에게 유영복의 흑기군을 초무하여 프랑스의 세력을 막도록 건의하였다. 또한 운귀총독 유장우도 흑기군을 이용하자고 건의하였다. 장지동도 중국의 국방을 번속인 베트남으로 확대하여야 된다고 적극적인 주전론을 폈다. 그러나 이홍장은 프랑스와 담판으로 베트남 문제를 해결하려고 하였다. 
그리하여 1882년에 이홍장은 프랑스 공사 프레데릭 부레(Frédéric Bourée)와 톈진에서 담판을 시작하여 가조약 3조에 합의하였다. 즉 중국은 군대를 운남, 귀주 성으로 철수시키고, 프랑스도 베트남을 점거하지 않으며, 베트남 국왕의 위신을떨어뜨리지 않을 것이며, 보승(保勝)을 개항하여 중국과 프랑스가 여기에서 무역하며, 또한 이곳을 중국의 영토와 같은 비율로 세금을 징수하고, 중국과 프랑스는 경계를 설정하여 베트남 북부의 자치를 보호한다고 하였다. 
톈진 담판의 가조약이 체결되자 프랑스군은 철군하고 군대를 파견하여 베트남 북부의 변경을 순시하였는데, 이 사실을 몰랐던 흑기군은 이들과 충돌을 일으켜 프랑스군을 물리쳤다. 청나라에서는 이를 '양산대첩'이라 부른다. 흑기군을 과신하고 있던 청의 일부 인사들과 임오군란 때 조선에 대한 간섭이 성공된 것을 본 청류파 세력들은 이홍장의 톈진 담판에 대하여 반발하였다. 
한편, 프랑스도 톈진 담판에 대하여 불만이었다. 이에 프랑스는 주일공사관인 아르튀르 트리쿠(Arthur Tricou)를 전권대표로 삼아 중국과 다시 교섭하여 시간을 끌면서 군사행동을 준비하였다. 이때 중국도 이홍장이 모친상을 당하여 고향으로 갔기 때문에 교섭의 성과가 없었다. 
1883년 8월에 프랑스는 무력으로 후에를 함락하고, 베트남과 '후에 조약'을 체결하였다. 그 내용은 베트남이 프랑스의 보호국이 되고 비엔투안성(Bienthuan Provinces)을 프랑스에게 할양하며, 프랑스는 홍하의 양안에 군사 보급지를 설치하고 흑기군을 축출하기로 하였다. 이 소식이 중국에 전해지자 주전파들은 베트남의 원조를 주장하였다. 단지 공친왕과 이홍장은 무력 사용을 반대하고 외교적인 방법으로 베트남 문제를 해결하려고 하여 '이홍장-트리코 회담'이 다시 시작되었다. 여기에서 북위 20도선을 경계로 하자는 이홍장의 주장과 북의 22도를 경계로 하자는 프랑스의 주장이 대립하여 결렬되고 결국, 프랑스는 무력으로 베트남 문제를 해결하고자 흑기군에 대하여 공격을 시작했다. 
그리고 프랑스는 1884년 4월에 프랑수아 에르네 푸르니에를 중국에 파견하여 이홍장과 담판하게 하였다. 그 결과, 청은 프랑스의 베트남 보호권을 승인하고 베트남에 주둔하고 있던 청군을 변경으로 철수시키기로 하는 대신, 프랑스는 중국의 변경을 침범하지 않는다는 5개조로 된 '청-프 간명조약'을 체결하였다. 한편 프랑스는 1884년 6월에 베트남과 〈제2차 후에조약〉을 체결하여 베트남은 프랑스의 보호국임을 받아들이고, 프랑스는 총독부를 베트남에 두기로 하였다. 
전쟁.
간명조약 체결 이후 철군 명령을 전해받지 못한 베트남 주둔 청나라 군대와 홍하를 순시하려는 프랑스 군대 사이에 충돌이 일어나게 되었는데, 이를 '북려충돌'이라 부른다. 이 때 청조에서는 주전파 장지동을 다시 양광총독으로 임명하고 진보침과 장패륜을 광동과 복건에 보내 군무를 처리하도록 하는 한편, 베트남에 있는 유영복을 데려오도록 하였다. 
프랑스 해군의 공세.
마강 해전.
8월 중순, 양국 간에 계속되고 있던 평화 협상은 결렬되었다. 8월 22일, 프랑스는 아메데 쿠르베 제독이 지휘하는 프랑스 극동 전대에게 복주에 집결해 있는 청나라 복건 함대(장패륜 제독)와 결전을 하도록 명령했다. 그리하여, 1884년 8월 23일, ‘마강해전’이 벌어졌다. 복건 함대 22척 중 기함 일등순양함 ‘양무’를 포함한 11척은 서양식 최신 함정이었지만, 13척을 보유한 프랑스 해군과 치른 해전에서 약 1시간만에 대부분이 침몰하거나 대파되었고, 수병의 사망자만 3,000명을 넘어선 것으로 보였다. 반면 프랑스가 입은 피해는 경미한 수준의 손상만 있었다. 전투의 서전은 중립을 선언했던 미국과 영국 양국 해군에 의해 촉발되었다. 해전에서 승리를 거둔 후 쿠르베 제독은 복주 해군 공창(아이러니하게도 프랑스 해군인 프로스 지켈의 기술 협력으로 건설된 것)에 큰 피해를 입히고, 해안 포대 몇 곳을 파괴한 후 전역을 이탈했다. 복건 함대의 패배로 청나라에서 반프랑스 감정이 확산되었다. 영국, 독일, 미국은 대프랑스의 관점에서 군사 고문단을 청나라에 파견했다.
홍콩 폭동.
반프랑스 감정은 영국령 홍콩으로 비화되었다. 1884년 9월, 마강 해전에서 손상된 프랑스 함정의 수리를 거절하는 대형 파업이 발생했다. 수리공들의 파업은 월말에는 해산되었지만, 항만 노동을 보조하는 다양한 업종이 파업을 계속했기 때문에 수리를 무사히 할 수 있는 상황은 아니었다. 영국 정부가 강경 진압을 하는 와중에 경찰에 노동자가 사살당하자, 10월 3일에 심각한 대폭동으로 발전했다. 영국 정부는 광동 장교들이 배후에서 폭동을 지휘한 것이 아닌가 의심했다.
대만 공방전.
마강 해전 이후 프랑스군은 8월 5일에 청군에 격퇴당했고, 실패한 대만 북부의 요충지 · 지룽 점령을 다시 계획했다. 프랑스군은 마강 해전의 승리와 함께 북부 대만을 점령해서 조기에 강화를 실현하려고 생각하고 있었다. 10월 1일에 프랑스 해군의 해병대 1,800명이 상륙했고, 현지 수비대는 기륭에서 후방 방어 거점으로 철수했다. 상륙한 프랑스군의 전력으로는 지룽시보다 앞서 가기에는 불안했고, 보급도 불안했다. 10월 2일 프랑스 해군의 레스페 제독은 의미없는 해안 포격을 거쳐 수병 600명을 기륭 후방의 담수로 보냈다. (담수 전투) 그러나 손개화 장군의 청군 약 1,000명의 반격을 받고 전투는 교착상태가 되었다.
1884년 말, 프랑스 해군은 가오슝 · 타이난 등 몇 곳의 중요한 항구를 봉쇄했다. 이외에 1885년 1월에 육상 전력을 4,000명으로 증강했다. 하지만 청나라도 병력을 2만 5000명까지 증원했다. 1885년 1월부터 시작된 프랑스군의 공세는 지룽시 주변의 작은 마을 몇 개를 점령하고 끝났고, 큰 비의 영향으로 2월 공세는 중단되었다. (기륭 원정)
석포만 해전.
대만 전선이 교착상태에 빠진 가운데 쿠르베 함대는 계속 증원되었고, 1884년 10월 시점보다 막강한 전력을 갖췄다. 1885년 2월 11일, 쿠르베의 극동 전대가 대만을 봉쇄하자 청나라 해군은 남양수사를 출동시켜 해결하려 했다. 2월 14일 밤, 프랑스 해군은 소형 어뢰정으로 기습을 펼쳐 호위함 ‘"어원"’ 1척을 격침시켰다.(석포만 해전) 이어 쿠르베 전대 본대도 청나라 해군을 추격했고, 닝보에서 가까운 진해 항구로 청나라 해군이 도망치자, 진해만을 봉쇄를 했다. 이후 장갑함 2척을 중심으로 진해 항구에 포격을 퍼부었고, 양쪽 모두 사소한 손실만 입었다.(진해 해전)
1885년 2월 청나라의 요청을 받아 영국 정부는 극동에서 프랑스 해군 입항 거부를 결정했다. 보급항을 잃은 쿠르베 함대는 보복으로 장강에서 거래되던 미곡 유입을 방해하며 식량난을 일으켰다. 강화를 재촉하려고 시도한 조치지만, 미곡 수송을 육로에만 한정시킬뿐 효과는 기대보다 크지 않았다.
통킹 전투.
삼각주에서 승리.
해전이 계속되는 가운데 육군이 통킹 전선에서 청나라군과 흑기군에 대한 공격을 반복했다. 통킹 원정 부대의 총사령관 샤를 테오도르 밀로 장군이 병으로 쓰러졌기 때문에, 1884년 9월에 부사령관 브리에르 드 리즐 장군이 총사령관으로 교체되었고, 홍강 삼각주 부근에 대규모 청나라군의 공세에 대처했다.
1884년 9월, 광서군 원정대가 랑선을 넘어 프랑스군의 포함 2척을 기습하자, 프랑스군 총사령관은 본격적으로 집결하기 전에 3,000명의 병사를 모아 반격했다.(껩 원정). 백병전을 포함한 격렬한 전투 끝에 세 부대로 분리된 프랑스군은 각처에서 광서군을 격파했다.
패배를 당한 광서군은 후방의 동선(東山)으로 철수했다. 프랑스군도 껩 원정에서 얻은 거점(동선에서 2, 3마일)에서 진지를 구축하고 광서군과의 전투를 대비했다. 11월 19일에 흑기군 2,000명이 이동 중인 프랑스군 700명을 공격했지만, 격퇴당했다.(유옥 전투) 또한 광동성에 거점을 둔 청나라 의용군 부대를 홍강 삼각주에서 쫓아내는데도 성공하여 삼각주 동쪽 장악을 달성했다. 더불어 안남의 베트남 민병 부대 소탕도 완료했고, 프랑스군은 홍강 삼각주를 점령하기 위해 말을 몰았다.
1차 랑선 공세.
1884년 12월 프랑스 의회는 통킹에서 육군 작전을 둘러싸고 시끄러웠다. 육군은 홍강 삼각주의 확보를 주장했으나 강경파는 통킹 전역에서 총공격을 주장하고 있었다. 강경파가 논의를 밀어붙여 육군이 새로운 임무를 맡는 것으로 결론났고, 통킹 최대의 도시 랑선을 향해 총공세를 시작했다. 전진 기지를 출격한 프랑스군은 1885년 1월 3일부터 4일까지 공격을 퍼부었고, 누이밥의 광서군을 격파하고 랑선 공격의 전초전에서 승리를 거두었다.(누이밥 전투).
랑선 공격은 1개월의 준비를 필요로 했다. 1885년 2월 3일, 프랑스군은 7,200명의 정규군과 4,500명의 현지 병사를 이끌고 공격을 재개했고, 청나라군은 20,000명으로 맞섰다. 프랑스군은 장비 운반에 어려움을 겪었고, 떠이호아(西和)와 동선에서 격렬한 저항을 받았다. 그러나 10일에는 랑선 주변부에 도달했고, 12일에는 랑선 북부에 진출했다. 청나라군은 결국 랑선을 포기하고 철수했다.(1차 랑선 원정)
뚜옌꽝 포위전.
랑선 점령 후 프랑스군은 1884년 11월에 운남 군과 흑기군에 포위된 뚜옌꽝(宣光)에서 고전중인 수비대를 구하기 위해 출정했다. 운남군과 흑기군의 포위 공격으로 수비대는 통킹 동원병과 함께 방어전을 펼쳤지만, 랑선 점령 시점에서 병력의 3 분의 1이 사상당했다.
프랑스군 1여단은 뚜옌꽝으로 진격하여, 호아목에 구축된 광서군의 방어 진지를 공격했다.(호아목 전투). 1885년 3월 2일, 반격에 나서면서 다시 수백 명의 사상자를 냈다. 이윽고 뚜옌꽝에 길을 뚫고 포위를 한 광서군 우익을 저격하는 전투를 시작했고, 얼마 지나지 않아 운남군과 흑기군은 포위를 풀고 철수했다. (뚜옌꽝 포위전)
고전 끝에 아군을 구한 이 전투로 프랑스군의 사기는 크게 높아졌고, 브리에르 드 리즐 장군은 “프랑스를 구한 영웅”으로 국내에서 찬사를 받았다.
종국.
수렁.
뚜옌꽝으로 향하기 전, 브리에르는 랑선에서 더 북진하여 랑선 공세로 치명적인 손실을 본 광서군을 추격하도록 전선사령관에게 명령을 했다. 프랑스군 2여단은 식량과 탄약을 보급받은 후 명령에 따라 진격을 재개했다. 2월 23일에 동당 전투에서 광서군을 물리치고 마침내 통킹에서 청나라 본토로 청나라군을 밀어냈다. 이외에도 청나라 국경의 일부 거점을 공격했지만, 2여단은 더 이상 전선을 확대할 병력이 존재하지 않아서 랑선으로 귀환했다. 랑선 공세 이후 전승이 계속되고 있던 프랑스군도 여기에서 일단 고비를 맞았다. 2여단은 랑선에서 광서군의 반격에 대처하기 바빴고, 같은 시기 1여단은 운남군을 공격하기 위해 나섰다. 광서군과 운남군은 몇 주에 걸쳐 공세로 전환할 형편도 아니었지만, 프랑스군 2개 여단도 광서군과 운남군에 결정적인 패배를 안기지 못했다.
교착상태에 빠진 전쟁에 자극을 받은 쥘 페리 총리는 강화를 이끌어 내기 위해 브리에르의 2여단을 청나라 남부의 국경 지대에 재돌입시키도록 명령을 내렸다. 브리에르는 광서성 국경에서 80km 근처까지 군을 돌출시키는 작전 계획을 검토하며, 여러 상황에서 결과를 추측해 보았다. 3월 17일에 파리로 타전된 결론은 “전력 부족으로 불가능”하다는 것이었다. 페리 행정부는 더욱 대규모 증원군을 통킹으로 보낼 결단을 내렸고, 이것으로 일단 궁지에서는 벗어날 수 있을 것으로 전망했다.
증원군의 대부분은 1여단으로 향했고, 2여단이 랑선을 수비하는 사이에 전선을 가로막고 있는 운남군 기지에 공격을 감행했다. (진남관 전투). 3월 23일, 프랑스군은 방보의 몇몇 거점을 점령했지만, 다음날 시작된 운남군의 맹공으로 피해를 입었다. 결국, 프랑스군은 방보 점령을 포기하고 퇴각했다. 프랑스군은 전선에 구멍이 뚫리지 않고 철수할 수 있었지만, 후방에서 재편성된 프랑스군들은 오랜 싸움에 겁을 먹고 있었다. 패배한 프랑스군은 사기가 떨어졌고, 이는 이후에 일어날 실태에 대한 전조를 보여주었다.
2차 랑선 공세.
1여단이 후퇴한 랑선은 운남군과 보조를 맞춘 광서군의 포위 공격을 받고 있었다. 2여단은 적은 병력으로 공격을 견디며 광서군에 반격을 가했고, 랑선 탈환을 포기하도록 만들었다. 운남군의 승리에 광서군이 편승한 것을 막은 2여단은 광서군을 추격해서, 국경 공격을 재개하려 했다. 그러나 중간에 전선 사령관 네그리에가 부상을 당하면서 지휘 계통이 마비되고 말았다. 지휘권을 물려받은 부관 폴 귀스타브 에르빈제는 보불전쟁에서 이름을 날렸던 인물이었지만, 전선 사령관으로서는 능력을 발휘하지 못했다. 1여단은 추격을 하지 않았고, 2여단은 패배를 만회하고도 남을 기회를 놓쳐 버렸다. 뿐만 아니라 방보 전투의 패배로 병사들의 사기가 떨어졌고, 광서군과 운남군의 반격 등으로 평정을 잃은 프랑스군은 스스로 랑선을 버리고 패주했다.(랑선 퇴각). 이때 에르빈제도 전사했다.
실제로 광서군은 반격을 할 수 있는 상태가 아니었고, 운남군도 랑선 전투에 참전할 수 없었다. 프랑스군 내부에서도 반대 의견이 존재했지만, 현실에 반영되지는 못했다. 전혀 시작될 기미는 보이지 않았지만, 추격의 공포에 프랑스군 부대는 최소한의 보급품만 가지고 경쟁적으로 도망갔다. 그 때문에 체제를 정비한 광서군의 반정신이 ‘프랑스군의 패주’라는 뜻밖의 보고에 랑선을 다시 점령했을 때, 그곳에는 프랑스군이 버리고 간 방대한 물자와 무기가 남아 있었다. 간신히 목숨만 건지고 달아난 프랑스 병사들은 공포와 피로로 극도로 사기가 떨어져 있었지만, 광서군도 큰 피해를 입었기 때문에 추격은 이루어지지 않았다. 흑기군과 운남군은 추격을 하는 대신 서쪽에서 프랑스군 수비대를 격파해 패주시켰고(풀럼타오 전투), 프랑스군의 공황상태에 박차를 가했다.
페리 정권 붕괴.
랑선 퇴각에서 프랑스군의 추태는 전투의 결과가 아니라 존재하지 않는 추격에 스스로 겁에 질린 결과였다. 따라서 완패 후에도 여전히 프랑스군은 일정한 우위를 유지하고 있었지만, 평정을 잃은 전선의 보고에 브리에르 장군 등의 후방 사령부에서도 공포에 감염되었다. 3월 28일 프랑스군 사령부는 본국으로 패전의 가능성을 통지했고, 군의 전보를 받은 파리의 프랑스 정부는 큰 충격을 받았다. 보고를 받은 페리 총리가 즉시 반격하라고 명령하자 브리에르도 “상황이 안정화 될 가능성도 있다”고 보고를 수정했다. 그러나 전선과 마찬가지로 반전 감정이 끓어오르기 시작한 프랑스 본국에서도 이 전보의 내용은 커다른 충격으로 다가왔다.
최초의 전보가 공개적으로 노출되자 곧바로 의회에서 전쟁의 지속 여부를 묻는 논의가 불같이 일어났다. 이것은 전쟁의 수렁에 밀어넣은 페리 정권에 대한 불신임안 제출 사태로 발전했고, 3월 30일에 쥘 페리는 총리에서 해임되었다. 그는 두 번 다시 총리로 복귀하지 못했고, 정치권에서도 한직을 전전해야 했다. 통킹 파동이라고 불린 이 정치적 문제는 페리에게 정치인으로의 앞길을 완전히 끝내 버린 것이다.
정전 합의.
새로운 총리가 된 샤를 드 프레이시네는 청나라와 강화를 타진했고, 온건파가 힘을 되찾고 있던 청나라도 승낙했다. 이때 영국, 미국, 독일 등이 조정에 나섰는데, 특히 영국은 총세무사인 하트를 이용하였다. 하트는 영국정부로부터 위임을 받고 중국해관의 영국 런던사무처의 제임스 캠벨(James Dunean Campbell)을 1885년 4월에 프랑스 파리로 파견하여 '청-프 간명조약이 유효하다'는 전제 아래 프랑스와 정전협정을 체결하였다. 청나라는 개전 전에 맺어진 톈진 협약을 이행하고 프랑스 측은 박레 매복 사건의 배상 청구를 취하하는 등 전후의 관계 개선을 약속했다.
그리하여 청프전쟁은 끝났으며, 1885년 6월에 이홍장과 프랑스공사인 쥘 파트노트르(Jules Patenôtre) 사이에 톈진에서 '청-프 신약'을 체결하였다. 그 내용은 중국이 베트남을 프랑스의 보호국으로 인정하고, 중국과 베트남의 변경 두 곳의 통상 장소를 정하기로 하는 한편, 프랑스 화물은 베트남과 광서성 변경에서 관세율을 감하기로 하고, 이후 중국에서 철도를 건설할 때 프랑스와 협상하도록 하였다. 전쟁배상금은 청나라가 프랑스에 지급하지 않았지만, 이 전쟁에서 청나라는 은 10억 냥 이상을 지출했고 2억 냥 가량의 빚을 지게 되었다.
정전 합의에 이르기 직전 대만 전선에서는 프랑스가 우세를 지키고 있었다. 3월 대만에서 프랑스군의 주둔 부대가 기륭의 포위를 격파하고, 타이페이로 퇴각시켰다.(기륭 원정). 또 펑후 해전을 통해 해군은 공세를 유지하며 펑후 제도까지 점령하고 있었다. 다만, 대만 전역을 제압하지는 못했다.
전쟁은 양자 모두 궁지에 몰린 상태로 종전을 맞이하게 되었다. 정전 협정이 맺어지자 청나라군은 즉시 조약을 이행해 군대를 철수시키고, 흑기군도 청나라 본토로 철수했다. 프랑스군은 타이완섬과 주변 섬 등 베트남 이외의 지역에서 해군을 철수시켰다.
6월 11일, 프랑스군의 총사령관이었던 쿠르베 제독은 정전 직후 병사했다.
결과.
청불전쟁은 청나라로서는 전쟁에서 완전히 패하지 않았는데 패한 것이 되고, 프랑스도 제대로 승리하지 못한 채 승리한 셈이 되었다. 이로 인해 청나라는 프랑스와 또 다른 불평등 조약을 체결하지 않아도 되었는데, 이는 앞서의 제1차 아편전쟁, 제2차 아편전쟁과 달리 청나라가 어느정도 프랑스의 사정을 알고 있어 적절한 전략이나 전술을 펼 수 있었기 때문이었다. 
청나라.
한편, 청나라에서 청불 전쟁은 구태의연한 군주제를 가진 청나라의 역사적인 역할을 끝낼 계기가 되었다. 전후 서태후와 관리들은 해군의 현대화와 지휘권의 통합을 추진했다. 그러나 청나라의 부패로 개혁은 지지부진했고, 이후 청일 전쟁에서도 패배하기에 이른다.
1884년 8월 23일, 복건함대의 패배는 청나라가 진행해 온 현대화 정책(양무운동)을 후퇴시켰다. 청불 전쟁에서 얻은 모든 교훈이 청 제국의 전근대적인 지휘 계통이나 장비에 문제가 있음을 보여 주었다. 주요 함대의 일부는 전투에 참가하지도 않았고, 그 이유가 일본을 대비하기 위함이라는 청나라 지도부의 변명은 전혀 설득력이 없었다. 그리고 그렇게 비장의 해군 전력을 아낀 것이 프랑스군을 유리하게 했다.
정치적으로는 이 시기 청나라 내부에서는 서태후의 독재정치가 확립되었고, 당시 당권자를 비판하면서 주전파였던 청류파의 세력이 해체되었다. 그리고 20여 년 동안 군사공업을 중심으로 전개해왔던 양무운동의 성과가 나타나지 않아 서양의 제도도 받아들여야 한다는 의견이 제기되기 시작했다. 그리고 청조는 '회풍은행'으로부터 차관하여 군향을 충당하려는 양광총독 장지동의 의견을 받아들여 외채를 빌려 전쟁비용을 충당하였다. 
국외적으로는 청나라의 무기력함이 드러나자 영국,러시아, 프랑스,일본 등이 중국과 그 주변의 나라에 대하여 야심을 품기 시작하였다. 특히 조선과 중국 동북지역(만주)가 전략적인 요충지로 청불전쟁 이후 10년 간 열강의 쟁탈목표가 되었다. 
프랑스.
1885년 6월 9일에 체결된 강화 조약인 톈진 협약 (리-푸르니에 협약)을 통해 프랑스는 베트남 북부를 획득하고, (흑기군이 해산되며) 통상로를 확보했다. 전쟁이 끝나고 얼마 동안은 베트남인들의 반란을 진압해야 했지만, 1887년에는 캄보디아와 그리고 남북 베트남을 따라 프랑스령 인도차이나를 설립했다. 이후 프랑스는 라오스 등 다른 식민지를 개척하기 위해 프랑스-타이 전쟁을 벌인다.
하지만 청불 전쟁에서 프랑스군의 실수는 프랑스의 제국주의에 찬물을 끼얹었고, 국민들에게 실망감을 안겨주었다. ‘랑선에서 완패’로 이미 정치인으로서의 생명이 끝장 난 페리뿐만 아니라, 측근으로 그의 후임이 된 앙리 브리송도 1885년 12월에 벌어진 ‘통킹 논쟁’에서 신랄한 비판을 받고 단기간에 사임했다. '통킹 논쟁'에서 조르주 클레망소 등의 식민지 확장에 반대하는 정치인들은 통킹에서 완전 철수를 요구했고, 의회에서 열린 철군안을 의결하여 반대 273표, 찬성 270표라는 근소한 차이로 철군안은 부결되었다. 만약 몇 명이 찬성표를 던졌다면, 베트남은 독립을 회복했을 수도 있었다.
청불 전쟁의 고전으로 프랑스의 식민지 확대를 주장하는 세력은 신용을 상실했고, 마다가스카르섬 등 일부 점령 계획이 지연되었다. 프랑스가 전쟁을 재개한 것은 1890년 이후였다.