经过与清军的多次交战,郑成功所率部队的实力消耗殆尽,已经难以抵御清军的进攻,同时军中又面临着军粮不足的困难。为了保存实力,1661年,郑成功亲率2万多将士和数百艘战船,自金门出发,经澎湖,向台湾进军。而此时的台湾正被荷兰殖民者所占据,他们在台湾拥有两大防御要塞,分别是热兰遮城和台南赤崁楼。1661年4月,郑成功率军在今台南市登陆,决定先攻取防御比较薄弱的赤嵌楼。随后,郑军与荷兰军舰展开了激烈的海战,郑军获得了胜利,击沉了一艘荷兰军舰。同时,在陆路上郑军也击败了荷兰陆军。荷兰殖民者无奈之下,向郑成功投降。
在取得赤嵌楼作为据点之后,郑军经过短暂的休整,随即便海、陆并进开始围困热兰遮城。郑成功为了尽快结束战争,一开始就对热兰遮城进行严密封锁,试图胁迫荷兰军队投降。在遭到荷兰殖民者的拒绝之后,郑成功开始下令对热兰遮城实施强攻。但由于热兰遮城地势险要、城池坚固,加之荷兰军队顽强抵抗,致使郑军损失惨重。为了减少自己的损失,郑成功被迫改变策略,决定对热兰遮城采取长期包围的战略。
然而,在1661年7月,荷兰为了保住其在台湾的殖民统治,调遣了600多名士兵和11艘军舰,对热兰遮城进行支援。7月中旬,停泊在海岸的荷兰援军遭遇到强风的侵袭,被迫离开海岸。郑军抓住这一时机,对部队进行了充分休整和周密部署。待到荷兰军舰于8月再回到台湾沿海时,郑军开始对其展开猛烈进攻。这一战,郑军大获全胜,并使得荷兰军队丧失了主动出击的能力。最终,在1662年2月,荷兰殖民者向郑成功屈服,彻底退出了台湾。
郑成功下令屯垦台湾的范围,北达噶玛兰(宜兰),南至琅峤(恒春),后因大肚平埔族拍布拉族大肚王与琅峤番人的反抗而减缓扩张;郑成功实际的统治区域大约是从二林(现彰化县二林镇)到茄藤(屏东县佳冬乡)的范围之间。
1681年正月,郑经病死。郑经死后,郑氏集团内部争权夺利,更加腐化。1681年二月,郑克臧被害,年仅12岁的郑经次子郑克塽在权臣冯锡范等人拥戴下继位主政,形成“文武解体,主幼国疑”的混乱局面。1683年五月,康熙帝命施琅进兵,六月十四日晨,施琅在铜山港誓师,统水师2万多人,战船300多艘进攻澎湖。施琅二十二日发起总攻,并取得了澎湖之战的胜利,歼灭郑军的主力,迫使郑氏集团投降。1684年,清政府设立了台湾府,隶属福建省,台湾重新归属中央政府管辖。