鄭成功攻臺之役

郑军

1659年（永历十三年，清顺治十六年）郑成功率领十万大军攻打南京，惨败而回，并失去潘庚锺和甘辉等得力将领。此战使郑军元气大伤，郑成功感于满清政权对明朝故土的统治已逐渐稳固，而郑军困守思明（厦门）孤岛粮草匮乏，难以提供数万大军给养，开始思考取得另外的根据地以为整补。
1660年3月（永历十四年，清顺治十七年）春，前荷兰通事何斌（福建泉州南安人），因与荷兰人发生债务纠纷而逃到思明，向郑成功鼓吹攻取台湾：“台湾沃野数千里，实霸王之区。若得此地，可以雄其国；使人耕种，可以足其食。上至鸡笼、淡水，硝磺有焉。且横绝大海，肆通外国，置船兴贩，桅舵铜铁不忧乏用。移诸镇兵士眷口其间，十年生聚、十年教养，而国可富、兵可强，进攻退守，真足与中国抗衡也。”同时献上台湾地图，讲解原住民形势及水路变化。何斌强调，台湾的粮食与军用物资充足，贸易位置理想，又有海峡天险，每一项都是郑军迫切的需求，使郑成功非常心动。但当时郑军正准备抵御清将达素的进攻，因此攻台之议被暂时搁置。同年6月（五月），达素领兵数万进攻厦门；郑成功引诱对方在海上决战，并加以击退，重振军威。
1661年2月（永历十五年正月，清顺治十八年），郑成功传令大修船只，听令出征，并召集将领讨论攻台事宜。然而中国传统以海为界，海外被视为化外之地，将领们不认同此计划，却不敢直言反对。只有到过台湾的将领吴豪发言道：“风水不可，水土多病”，又说“港浅大船难进”。前提督黄廷也附和吴豪的看法，但二人的意见被郑成功驳斥。大将马信试图打圆场，提议先派一支部队前往探望，如果可取则大军立即跟进，若荷兰人防御坚固则再讨论。陈永华也同意马信的意见。此时协理五军戎政（军事行政官）杨朝栋揣摩郑成功的想法，发言表示支持攻台；郑成功闻言大喜，决议出兵。

荷军

当时荷兰东印度公司的台湾长官为揆一（Frederik Coyett），驻守热兰遮城（Fort Zeelandia，今台南市安平古堡）；另有地方官猫难实叮（Jacobus Valentyn）驻守普罗民遮城（Provintia，遗址位在今台南市赤崁楼）。
自1650年前后，随着中国情势动荡，荷兰东印度公司开始担忧郑成功来袭。对此，十七人董事会决议，台湾的守军不得少于1200人，但未如实执行。1660年，当郑成功攻打南京失利，大员地区便盛传国姓爷即将来袭。1月时，大员商馆发现华商陆续将财产搬回家乡，并减少从中国进口货物，向汉人社区打听消息后，判断国姓爷将在3月底出兵。
揆一开始加强戒备，不准华人在普罗民遮城贩卖粮食，所有华人头家仕绅软禁在热兰遮城中以免通敌。田间未及收割的稻谷一律焚毁，共焚毁8000袋之多，并造成华人伤亡。揆一同时向巴达维亚请求援军，并在热兰遮城面向海处新建一座棱堡，本来还打算在打狗新增一座堡垒，但被巴达维亚当局以花费过多而回绝。
7月16日，巴达维亚总督派遣范德兰（Jan van der Laan）率600人前往台湾，并指示范德兰，若国姓爷未如预期来袭，改而攻打澳门以弥补军费开支。然而范德兰认为郑成功来袭一事纯属谣言，抵台后坚持攻打澳门，多次与当地官员爆发争执。为此，大员议会派遣使者前往厦门，一探郑成功的意图，再作判断。随后郑成功否认意图攻台，但揆一等人并不相信，仍决议暂缓进攻澳门，引起范德兰不满。次年（1661年）范德兰便带随行军官返回巴达维亚，只留下士兵与当地荷军共1500人防守台湾。
有学者认为，除了因范德兰离去影响荷军的防卫实力外，荷兰于1661年两次攻打大龟文王国之兵力耗损，也可能对荷兰战败有间接影响。

郑军渡海

1661年3月（永历十五年三月），郑成功调度部署，自领右武卫周全斌、左虎卫何义、右虎卫陈蟒、提督骁骑镇马信等为出征队。同时以户官郑泰守金门，以兵官洪旭、前提督黄廷留守厦门。
4月21日（三月二十三日）中午，郑成功率将士25,000（一说11,700）、战船数百艘（一说300艘），在金门料罗湾集结，次日抵澎湖莳内屿，等待顺风出发。3天后郑军跨越黑水沟，到了柑桔屿（今东吉屿与西吉屿）遇逆风折回。因何斌曾表示只需过几天就到台湾，郑军未携带足够粮食，搜索澎湖诸岛后只得百余石，不足大军一餐之用。郑成功担心错过涨潮时机，将会受困于此，在30日冒着风雨下令出航。

郑军登陆

4月30日黎明，郑军在大雾中抵达鹿耳门。雾散了之后，荷军看见海上郑军船舰的桅杆，有如森林，十分惊慌。揆一立即传令备战，要求荷兰人回到热兰遮城内，并要荷军上尉贝德尔（Thomas Pedel）在大员街设置四门大炮。
当时台湾南部的海岸线在今天台南市区的赤崁楼一带，东印度公司在岸边筑有普罗民遮城（即赤崁楼）。近海处有连串沙洲，围成一片名叫台江的潟湖内海。沙洲间有若干水道，多淤浅难通大船，只有鲲身半岛旁的港道（南水道）为主要进出通路，而东印度公司在鲲身半岛尾端筑有热兰遮城守卫。台江偏北处，北线尾沙洲和北方沙滩间，有一条淤浅的鹿耳门港道，底下是坚硬的铁板沙，船只触之即沉，因此荷军并未派兵把守。
郑军抵达时，正值大潮，船舰络绎通过鹿耳门水道。上午10时点左右，第一批船只已在赤崁西北部的禾寮港（又叫油村smeer dorp，约在今台南洲子尾）。
郑军登陆后由马信率领，往普罗民遮城进军，试图切断普罗民遮城与热兰遮城间的水陆交通。由于普罗民遮城内只有400名士兵，大员方面遂在下午4时，派遣上尉阿尔多普（Joan van Aeldorp）率200人增援，但在郑军攻击下只有5-60人进入普罗民遮城，其余返回热兰遮城。到了晚上，猫难实叮为避免郑军夺取赤崁街的粮米，放火烧了当地约四分之一的房子，却被随即赶来的郑军击退。事后郑军约获得半个月的粮食，暂时化解缺粮危机。

荷军海陆反攻北线尾，郑军大胜

5月1日（四月初三），荷军从陆上和海上主动出击。陆上由贝德尔率领250名士兵进攻北线尾，他认为华人都是胆小鬼，受不了火药气味和枪炮的声音，只要几名士兵被射死就会逃亡。郑军由宣毅前镇陈泽率领4000名士兵应战，在正面安置50把火绳枪迎击，并以700人自水路迂回包抄，成功埋伏在荷军背后。虽然揆一发现这支分遣队，并发出撤退讯号，轻敌的贝德尔却无视警讯，执意与郑军交战，随即遭到前后包围而溃败，包括贝德尔在内共118人阵亡。
海战方面，主力舰赫克托号（Hector）与斯·格拉弗兰号（`S Gravelande），先掩护贝德尔登陆北线尾，便向在北锚地的郑军开火，击沉多艘郑船。郑军由陈泽、侍卫镇陈广和左虎协陈冲率60艘船迎战，并勾住荷船的缆索，试图登船攻击，却遭荷军火炮击退。此时赫克托号因船员操作不慎，大炮火花误点燃火药库，造成爆炸而沉没。郑军趁势追击斯·格拉弗兰号，展开接舷战，以铁链将火船扣在船头斜桅上，成功点燃船只。斯‧格拉弗兰号赶紧扑灭火势，和较小的白鹭号（De Vink）一起冲出战场，前往南锚地停泊。此外通讯船玛利亚号（Maria）因无配置士兵，战斗前便已逃离。至此郑军在陆上及海上都获得大胜。

第一次议和，普罗民遮城投降

5月2日（四月初四），大员评议会要求与郑军和谈，郑成功同意。次日大员评议会议员汤马斯‧范‧伊伯伦（Thomas van Iperen）和检察官列奥那多‧范‧李奥纳杜斯（Leonard van Leonardus）前往赤崁与郑成功谈判，郑成功宣称台湾隶属漳州，是郑芝龙固有之地，只是暂借给荷兰人。东印度公司代表则说，郑芝龙曾在条约中承认荷兰领有福尔摩沙，希望郑成功顾念双方多年合作的情谊，彼此退让。但郑成功强硬表示荷兰人必须交出城堡和领地，否则只有重新开战。荷兰代表见无商量余地，随即返回。
同时郑成功派遣杨朝栋前往普罗民遮城，劝猫难实叮投降。这时郑军以10,000名士兵包围普罗民遮城，并切断水源，城内只有薄弱兵力和五、六天分粮食。李奥纳杜斯在赤崁和谈之后，获准进入普罗民遮城，当他了解城内状况后，勉强同意猫难实叮放弃该城，并代为向大员评议会报告。
5月4日（四月初六），猫难实叮向郑成功表示愿意有尊严地投降。二日后，140名荷兰士兵将步枪装弹上膛、点燃引线，扬旗击鼓出城，加上妇女、儿童与奴隶，共270人撤出普罗民遮城，随后被郑军安置在赤崁街。郑军接收城堡，完全控制赤崁地区。

郑军攻占大员街

拿下普罗民遮城后，郑成功立即进军大员市街，从鲲身半岛、海面以及北线尾三方逼进。大员评议会决议放弃大员市街，将兵力、居民和物资撤入热兰遮城中，来不及撤走的便放火焚毁。这时城中共有1733人，其中有905名士兵，余为妇孺和奴隶。
5月5日，郑军攻入大员市街，并与阿尔多普所率的火枪兵交战，以优势兵力逼退荷军，成功占领大员街。此后双方有几次小规模的战斗，但局势并无改变。

荷军击退围城郑军

5月24日，郑成功派遣荷兰牧师安托纽思·亨布鲁克为使者进入热兰遮城劝降，结果亨布鲁克反而劝守军坚持到底，等待巴达维亚方面的援军。大员评议会于是措辞强硬地回信给郑成功表示求战。由于亨布鲁克的妻子和女儿仍在郑军中当作人质，因此他不顾城中两个女儿和其他荷兰人的挽留，回到郑军营中赴死。。
5月25日，郑成功以28门大炮，攻击热兰遮城，甚至击中揆一休息的官邸，然而击中城墙的炮弹，却未造成结构太大伤害。城墙上的荷军炮长随即展开反击，与堡垒凸出的棱堡形成交叉火网，击毁郑军架炮土台，并炸死众多攻城部队，迫使郑军抛弃大炮并退守到大员街。荷军趁势出击，并逐一用铁钉封死郑军大炮，与马信和刘国轩所率弓箭手交战，并以优势火力将其击退。
根据荷兰方面资料，郑军在此役损失上千人。郑成功见热兰遮城易守难攻，决定改变战略，以马信驻守大员市街，长期围困热兰遮城，同时将多数部队派往各地囤垦以解决粮食不足的问题。
其后两军一度爆发海战，郑军攻击并焚毁自基隆来援的荷兰船只埃曼霍恩号（Emmenhorn）。参战的斯‧格拉弗兰号和白鹭号因受损严重、耗尽弹药，在此役后开往日本。

郑军赴各地囤垦

郑成功决定攻台最主要的原因之一是大军乏粮。在澎湖停泊时，因为粮食即将用磬，郑成功不得不在逆风和阴雨的天气中下令出航渡过台湾海峡最危险的黑水沟一段。到了台湾之后，粮食的接济一直是郑军首要工作，登陆第二天，郑成功便命杨英将接管的粮食分派给各镇，但只够半个月之用。
为此在进攻热兰遮城前，郑成功下令清查各地粮食，仅搜得粟6000石、糖3000余石，大约只能支应2个月，不足以持久作战。为彻底解决缺粮问题，郑成功加紧推动农业殖民地的计划，并着手建立政府组织。郑成功宣布赤崁地方改名为“东都明京”，下辖承天府以及天兴县、万年县；同时大员街改为安平镇。
六月，郑军陆续赴四处囤垦，郑成功允许部下自行选地开垦。这些土地也作为将领的领土，也被要求在领土内兴建城镇，并尽可能靠海。同时郑成功也订定了一些土地的管理措施，例如开垦前必须先行禀报亩数，有先垦而后报，及少报而垦多者，土地将没收且须受惩处。其中左虎卫何义被派往虎尾垄社（今云林县褒忠乡）、左先锋镇驻扎新港仔、竹堑（今新竹县竹北市），以援缴后镇、后冲镇、智武镇、英兵镇、虎卫右镇相继前往囤垦，中冲、义武、左冲、前冲、游兵等镇则往大员以南的凤山、观音山囤垦。
为了确实测量土地范围，郑成功命荷军被俘的土地测量师为郑军工作，其中一位菲力普‧梅，便纪录当时郑军开垦的情况：“每个将官手下有1000-1200人，在山脚和每个能开垦成水田的土地上，每100-200人为一群，很认真地耕种土地。无论年纪多小，全无例外都地须种植很多蕃薯，多到足够维持三个月的生活”。
虽然郑军实行了开垦计划，毕竟农作物短时间内无法收成，郑军并未化解缺粮危机。到了农历七月，运粮船受到强风阻扰，无法如期抵达，每斗米价涨至四、五钱不等。郑成功只得打破不得扰民的规定，向民间征收粮食，只允许人民保有十分之一的存粮，其余需供郑军食用。赴各地屯垦的部队，也与当地原住民爆发冲突，往北边的郑军遭大肚王国袭击，死了1400~1500人，南边的部队也被琅峤人杀死700~800人。
到了农历八月，缺粮更是严重，官兵每天只吃两餐，甚至食木子充饥，即便前往各地买米，也只得支应10日。不少士兵便因缺乏营养而生病，甚至1天内死了70-80人，驻扎在大员街的部队，健康的人只有十分之三、四。饥荒也造成士兵逃亡，有些人干脆逃往荷军阵营。直到终于有20艘运粮船抵达台湾，才勉强度过缺粮危机。

荷兰援军

1661年3月22日，当初奉命支援福尔摩沙，却愤而离开大员的范德兰返抵巴达维亚。他向总督和东印度参事会控告揆一的无能和胆怯。6月7日，东印度参事会任命克连克（Herman Klenk）为新任大员长官，取代揆一。
6月22日，克连克率荷兰地亚号（Hoogelande）和罗南号（Loenen）前往台湾。两天后（24日）通讯船玛利亚号返抵巴达维亚，报告郑成功攻打大员、公司惨败的消息。巴达维亚闻讯大为震惊，立刻派船追赶克连克以收回成命。
6月25日，巴达维亚总督决定派出舰队援救大员，原定以范德兰为指挥官，但他坚辞不受，于是改以卡乌（Jacob Cauw）为舰队司令，率领海豚号、纳尔登号（Naerden）、梅顿浩（Muijden）、须德海号（Zuyd-zee）、哈赛尔特号（Hasselt）、安克文号（Anckeveen）、科克尔克号（Koukerke）、厄克号（Urk）和泰伯德号（Terboede）等九艘船舰，以及725名士官兵、8个月粮食，前往福尔摩沙。随后又先后派唐堡号和科登霍夫号（Cortenhoef）增援。
7月30日，克连克座船抵达大员港外，派员与揆一接触获悉战况后，不敢登陆履新，在次日借口遭风前往日本。
8月12日，卡乌率领的舰队抵达大员港外，卸下一批粮食弹药，并派50名士兵入城增援，守军士气大振。不过海上风浪增强，厄克号在萧垄溪（今曾文溪）口搁浅，船上42人被郑军俘虏。卡乌于是令舰队前往澎湖避风、取水，9月9日才又返回大员，顺利卸下15,000磅火药和数门大炮。

台江内海海战

9月16日，荷军主动出击，科克尔克号、安克文号、罗南号、泰伯德、科登霍夫号自南水道进入大员港，停泊在热兰遮城前方。上午10时许，舰队驶往大员街旁，对市街开火，然而受阻于来自南方的洋流，加上海湾水深不够，荷军炮火无法准确命中。
郑成功命黄安把守陆路，又率宣毅前镇陈泽和戎旗左协陈继美、戎旗右协朱尧和水师罗蕴章迎战荷兰船舰。荷军用小艇进攻，却遭引诱而远离大型舰的炮火掩护，被郑军的优势兵力将击退。
另一方面，科克尔克号在战斗中搁浅，遭到郑军炮火集中攻击，爆炸沉没。科登霍夫号也搁浅在近处，被郑军火船烧毁。郑军后冲镇黄昭并俘获三艘荷军小艇。荷军在此役阵亡128名，负伤上百名。郑军则有150人阵亡。

失败的荷清同盟

荷军遭此重创，无力再对郑军发动攻击，只有几次零星的骚扰式突袭。11月6日，清靖南王耿继茂致信揆一，说他知道郑成功攻打台湾的消息，提议清荷结盟，扫除中国沿海的郑军。大员评议会认为这是最后的机会，便派遣3艘火力最强的战舰，以及满载作战物资的2艘小船，准备与清军共同作战，借此逼迫郑军解除包围。
12月3日，揆一派卡乌率领须德海号、唐堡号、荷兰地亚号、安克文号和罗南号前往福州。不料卡乌到了澎湖时借口避风停滞不前，后来更直接率须德海号和荷兰地亚号返回巴达维亚。
12月10日，唐堡号等三艘船返回大员，荷军得知卡乌逃走，士气几乎溃散。尤其精良的军火和粮食被卡乌载走不少，使热兰遮城局势更加艰困，陆续有士兵为求活命向郑成功投降。

乌特勒支碉堡之战

12月16日，从荷军脱逃的日耳曼佣兵当中的中士拉迪斯（Hans Jurgen Radis）逃往郑军，向郑成功报告了热兰遮城内的详细状况。他说守军大半生病、疲劳不堪，无法坚守太久，因此不要只顾封锁，更要趁此机会发动攻击。同时提起乌特勒支碉堡（今安平第一公墓）的战略地位，一旦占领碉堡所在的山丘，便可居高临下攻击热兰遮城的四角附城，轻易攻破荷军防线。
郑成功听从拉迪斯的建言，新建了3座炮台。其中1座在乌特勒支碉堡南边，架设10门大炮，另外2座在碉堡东边的大员街，架设18门大炮，加上北线尾的2门大炮，合计30门大炮从三个方向瞄准碉堡。此外，拉迪斯也协助郑军在碉堡南边的阵地，建造一座欧式要塞。
1662年1月25日郑军从北、东、南三面炮轰乌特勒支碉堡和热兰遮城，同时派出16艘战船来到热兰遮城附近的码头，引诱荷军分散火力，以掩护攻城部队夺取乌特勒支碉堡。郑军在一天之内发出2,500发炮弹，有1,700发左右打向乌特勒支碉堡，而拉迪斯兴建的要塞火力最强大。到了晚上，碉堡三面墙壁都被击毁，荷军只得放弃碉堡，点燃炸药引线后撤退，让郑军顺势夺下碉堡。晚间8时半火药爆炸，碉堡崩毁，郑成功一度想登上山丘视察，被拉迪斯劝离；而本来在碉堡的马信，也于不久前返回大本营庆祝获胜，皆幸运地逃过这场爆炸。
此役彻底瓦解了荷军士气，1月27日，大员评议会决议放弃一切抵抗，要求和谈。

和谈，东印度公司离台

自从揆一有意开城后，双方便开始协商和谈内容。郑成功表示在9个月的围城期间，已有相当多的花费，除了要荷兰人交出热兰遮城外，更要里面所有的财物作为赔款。而揆一等人则是坚持条约必须有全副武装撤退，以及双方互换人质，也尽力争取可带走的个人财产。
最终于2月1日，双方代表到大员街，依照本国习俗，举行誓约、签字、盖章等程序，完成缔约。条约内容大多由荷兰人提出，郑成功也几乎都同意。只是当揆一要求释放遭俘虏的奴隶时，却被郑成功怒斥“和约里根本没有提到奴隶”，迫使揆一放弃索回奴隶。
2月9日，分散于各地的荷兰人陆续抵达，2000名荷兰人登上8艘荷兰船舰，等候出航。揆一在海滩上将热兰遮城的锁匙交给郑氏官员，郑成功也进入热兰遮城接收堡垒以及里面的财产。《热兰遮城日志》记录至这一天为止，台湾便归郑氏统治。揆一于2月17日率领舰队启程，历经1个多月抵达巴达维亚。

郑氏方面

攻下台湾后，按照郑成功的战略，金门、厦门将改造为对抗清军的前线基地，而根据地则转移至台湾。如此一来，即使郑军面临须弃守金门、厦门的情势，而仍然可继续骚扰中国沿海。
然而郑军将士大多视前往台湾为畏途，出征前就有士兵逃亡，而来台者也因水土不服大量病死。另一方面，郑氏将领大多都涉入海外贸易，担心郑成功攻台或厦门反遭清军攻陷，将破坏既有的贸易体系，使自己的事业受损。因此面临郑成功搬迁家眷来台的命令，郑泰、洪旭、黄廷等重要将领都抗命不往，乃至于“不发一船至台湾”。
随后又爆发了郑经私通弟弟乳母的事件，郑成功愤怒下令处死郑经，而郑泰等人则是再次抗命，甚至杀死郑成功派来的使者，令对立的局面更为严重。直到郑成功病死，郑经于郑氏王朝嗣位战中胜出，情势才勉强安定下来。

荷兰方面

根据战后双方签订的和约，荷兰人交出热兰遮城里共471,500荷兰盾的商品与财产给郑成功，加上堡垒的枪炮弹药，损失更是达120万荷兰盾。失去大员后，透过台湾连结中国与日本的贸易计划也无法实现，而且此事也重挫荷兰人在东亚海域的无敌形象，令荷兰人担忧敌对势力会效法郑成功的行为，加重公司军事支出的负担。
为了报复郑成功，荷兰人开始在海上劫掠郑氏船只，甚至摧毁了郑军在沙埕的港口，切断郑氏从浙江获得丝的管道。后来更与清军联手攻打郑氏，将郑军逼离中国沿海，并于事后重占鸡笼。然而在清朝厉行海禁下，东印度公司在基隆的营运几乎无利可图，花费却很庞大，最后于1668年撤出。
至于大员长官揆一则被追究战败责任，流放至班达群岛，直到1674年获威廉三世赦免，才恢复自由回到荷兰。1675年他出版《被遗误的台湾》一书为自己辩护。

开启汉文化

郑成功领有台湾之后，建立了台湾第一个汉人政权，随者战役来台的将士以及眷属，加上收留不愿配合迁界令的中国沿海人民，估计约带来了数万移民。随后继位的郑经在陈永华规划之下，引进明制的宫室、庙宇和各种典章制度，台湾跟东南亚、太平洋等南岛文化开始分道扬镳，汉文化渐渐成为台湾的主流文化。因此有学者形容此役“决定台湾尔后四百年命运”。

南明人士的质疑

不过当时的明朝遗民却批评郑成功攻台一事，担心郑成功不再致力反清复明，反而据地做台湾王。虽然郑成功宣称攻台是为了安置文武百官的家眷，但张煌言认为从未听说将辎重与眷属安置外国，又能经营中原的先例，直言此举“暴师半载，使壮士涂肝脑于火轮、宿将碎肢体于沙碛，生既非智，死亦非忠”。随后永历帝于云南告急，郑成功也正与荷兰人对峙，未能出兵相救，种种作为皆不被张煌言谅解。郑成功的老师钱谦益也认为郑成功既以台湾为根据地，恢复中原则更无希望。