舰队到达鹿耳门港后,立即利用涨潮的时机从北航道驶入内港。荷兰人预判失误,使得南航道的大炮成为了摆设,顿时束手无策。郑军在台江登陆后,立即在此建立滩头阵地,切断了赤嵌城和台湾城的联系。当地的高山族居民听到郑军到达,也积极为郑军提供帮助。
当时赤嵌城只有荷军400人,于是揆一派遣450人以及四艘战舰,兵分三路救援赤嵌城。四月初三,郑军击败了两路荷军。在海上,郑成功以60艘战舰围攻荷兰战舰,最终荷兰的军舰被击沉一艘,重创两艘,还有一艘直接逃到了巴达维亚。荷兰三路军队溃败,使得赤嵌、台湾两城的联系被完全切断,郑成功则继续围攻。
四月初四,赤嵌城水源断绝,选择了投降,不过揆一依然在台湾城坚守。台湾城是荷兰统治台湾的中心,台湾城是荷兰殖民者在台湾的统治中心,城堡坚固,城墙高10米,城墙上设置有大炮几十尊,可谓易守难攻。当时城内尚有870名荷兰人,而台湾城的已经缺粮、缺水,补给困难。
赤嵌城投降后,郑成功调集了28门大炮,加紧进攻台湾城。然而,由于火器技术上具有差异,郑军围攻台湾城几个月不破。五月二十八日,荷兰东印度公司向台湾增援10艘军舰,并运载了700名士兵。经过38天的航行,舰队于七月十八到达台南。最终,荷兰的五艘军队在台南登陆,但是有一艘触礁沉没,其士兵被郑军俘虏。
润七月二十一日,荷兰的7艘军舰,15艘小艇兵分两路,对郑军舰队发动了进攻。没想到,荷兰舰队直接冲击了郑军的包围圈,结果两艘军舰被击沉,3艘小艇被俘虏,损失了128名士兵,其他舰艇狼狈逃回巴达维亚。
台湾城的荷兰军被围困数月,粮食缺乏,疾病流行,士气低落。而郑军则占据了台湾大部分地区,进行屯田,经过几个月的艰苦奋斗,终于解决了粮食问题。十月,揆一派遣使者到福建,联系清军夹击郑军。然而清军却要求荷兰先攻打厦门,再谈攻打台湾的事情。揆一无可奈何,派出三艘战舰、两只小艇去攻打厦门。没想到,这支舰队在中途直接就掉头逃往了巴达维亚。
1661年十二月(阳历1662年1月25日),郑成功调集28门大炮对台南城发动了总攻,最终揆一选择投降。台南城被郑军围困了将近九个月,荷兰军队死伤1600人。当然,郑军也损失了9000多人,伤亡非常惨重。经过六天的谈判,揆一签字投降,随后带领900名荷兰士兵撤出了台湾岛。