

1646年,清軍攻入浙江境內,明軍將領鄭芝龍投降,其子鄭成功苦勸無果后,帶兵繼續抗清。在輾轉來到廈門、金門地區后,鄭成功率20余萬大軍登陸臺灣,趕走了荷蘭殖民者。1662年,鄭成功去世,其子鄭經發動政變奪得政權,繼續以明朝舊臣的身份與清朝對抗。清朝和鄭經的談判未能取得成功。
武力攻取
清朝政府見招撫不成,轉為武力攻取,出兵占領了金門、廈門、東山島等地,鄭氏的船隊被迫退出大陸。清軍水師乘勝開往臺灣,結果在半路遭遇臺風,船只損毀。第二年清軍再次出征,又一次遭遇臺風。眼見武力攻取屢遭挫折,清朝只能重新和平招撫,表示愿意冊封鄭經為“八閩王”。但由于鄭經堅持要求保留明朝舊例,雙方的談判再次告吹。
1673年,吳三桂、耿精忠、尚可喜發動了三藩之亂。趁著清朝忙于鎮壓三藩時,鄭經派軍橫渡海峽,接連占領福建、廣東沿海地區。
鄭氏混亂
1677年,清政府重建福建水師,1679年,頒布遷界令,下令沿海居民內遷,全面切斷與臺灣的經濟往來。當時的臺灣開發尚不充分,鄭氏政權全靠與大陸的商貿往來,康熙的這一手讓鄭氏政權陷入錢糧匱乏。鄭經緊急下令,要求每戶居民每月增繳一斗米充實軍資,屬下的俸祿也多有拖欠,這讓臺灣上下對鄭經極為不滿。此時,清朝水師將領萬正色率軍大敗鄭氏軍隊,收復沿海地區,鄭經敗回臺灣。
1681年,鄭經病逝,臺灣內部爆發政變,再加上連遭水旱災害,糧食短缺,整個鄭氏政權人心浮動,不斷有人叛逃。
派軍收復
康熙認為收復臺灣的時機已到,任命與鄭成功有殺父之仇的降將施瑯為水師提督,武力攻臺。
1683年農歷六月,施瑯率領戰船200余艘、士兵2.4萬人向臺灣進軍,掌權的鄭克塽(shuǎng)派遣劉國軒據守澎湖列島抗拒清軍。屬下將領建議劉國軒趁著清軍立足未穩先行攻擊,劉國軒卻認為夏季臺風多發,可以等待臺風再次將清軍吹進大海。劉國軒顯然失算了,這年夏季天氣異常平靜,施瑯平安駛過海峽。
施瑯派遣先頭部隊與鄭軍交戰,此時正逢漲潮,部分清軍船只被沖向岸邊,遭到鄭軍包圍。施瑯見狀率軍解救,卻被鄭軍將領林升率軍包圍。雙方展開猛烈交戰,硝煙彌漫。在激戰中,施瑯的右眼被火銃擊傷。鄭軍將領林升的右腿被清軍火炮打斷,失去指揮能力。施瑯趁機率軍奮力突圍,撤退到附近島嶼休整。劉國軒率兵進攻卻無功而返。
臺灣回歸
六月二十二日,施瑯向鄭軍發動總攻,海上的風向有利于鄭軍,清軍將領朱天貴被鄭軍炮擊而死,清軍陷入苦戰。到了中午,風向轉而對清軍有利,清軍順風而下,幾艘船圍攻一艘鄭軍戰船,各種火器齊發。鄭軍全面崩潰,多名大將戰死,損失近1.2萬人和190艘戰船。劉國軒見大勢已去,率領殘部退向臺灣,澎湖各島紛紛向清軍投降。此戰清軍僅傷亡2000余人。
此戰落敗,使鄭克塽大為恐慌,只得上表投降。
臺灣投降后,康熙采納了施瑯等人的建議,設立臺灣府,下轄臺灣、諸羅、鳳山3縣,歸福建省管轄,島上駐兵8000人。