自從1647年1月在小金門起兵抗清後,鄭軍轉戰浙、閩、粵等行省東南沿海,多次幫助明朝宗室與民眾渡海定居台灣及東南亞各地。此外,鄭成功讓華商領取鄭府令牌和「國姓爺」旗號,以幫助保護華人在海外經商時的安全;當時確有很多海外華商採取此法,而得以安全出海經商。
然而,統領數萬人的大軍抗清,卻始終無法取得較大的根據地,鄭成功被迫必須通過海外貿易籌備糧餉。
北伐南京失敗後,鄭成功所部元氣大傷,並且面臨軍糧不足的問題;為了解決大軍的後勤給養問題,鄭成功決定聽從何斌之建議收復由荷蘭殖民主義者侵佔的台灣島。永歷十五年(1661年),鄭成功親率將士二萬五千、戰船數百艘,自金門料羅灣出發,經澎湖,向台灣進軍。荷蘭於台島西南建有兩大防禦要塞,一為位於大員(今台南市安平區)的熱蘭遮城(Fort
Zeelandia),二為位於台江內陸赤崁地方(今台南市中西區)的普羅民遮城(Provintia)。同年四月初一,鄭軍經由鹿耳門水道進入台江內海並於禾寮港(今台南市北區開元寺附近)登陸,意圖先求取防禦薄弱的普羅民遮城。隨後鄭軍在台江海域與荷蘭軍艦展開海戰,擊沉荷軍艦赫克特(Hector)號,取得台江內海控制權,並同時在北線尾地區擊敗荷蘭陸軍,以優勢兵力包圍普羅民遮城。不久,於四月初五即迫使普羅民遮城守軍出降。五月初五,鄭成功改赤崁為「東都明京」,設承天府及天興、萬年二縣。
在取得普羅民遮城做為據點之後,鄭軍隨即由海、陸兩面圍困熱蘭遮城。由於考慮到兩萬大軍的糧餉調度不易,鄭成功並沒有做持久戰的打算,一開始即對熱蘭遮城施壓,試圖脅迫荷蘭軍隊投降。遭荷蘭大員長官揆一(Frederik
Coyett)拒絕其投降要求之後,鄭成功一度下令強攻熱蘭遮城,卻遭遇荷軍極頑強抵抗,鄭軍損失慘重。由於強攻不下,加之大軍糧食短缺,使得鄭成功被迫改變策略,派出大部分的軍隊至南北各地屯田、徵收錢糧,以解大軍乏糧的燃眉之急,對熱蘭遮城改採長期包圍的戰略。
永歷十五年(1661年)七月,荷蘭調遣的援軍抵達大員,除了六百多名士兵、十一艘軍艦以外,增援部隊亦為熱蘭遮城帶來大量補給品與火藥。時鄭成功的軍力仍分散台灣各地實行任務,駐守於大員以及普羅民遮城市鎮的軍力預估不到三千,遂使荷蘭軍重新燃起反撲的希望。七月中旬,停泊於外海的荷蘭援軍遭遇強風侵襲,被迫離開大員海岸,前往澎湖躲避風雨;其中荷蘭軍艦Urck號不幸擱淺,船上人員皆遭鄭軍俘虜。此一變故,使鄭軍獲得整備的暫機,待荷蘭軍艦於八月回到大員海域時,鄭軍雖未能調回多數兵力,卻已然完成作戰的準備。八月中旬,荷、鄭兩軍於台江內海展開激烈海戰,鄭軍大獲全勝,擊沉一艘荷蘭軍艦,並奪取船隻數艘,自此荷軍喪失主動出擊的能力。
十二月,日耳曼裔荷蘭士官Hans Jeuriaen Rade叛逃,鄭成功在其提供之情報的幫助下,炮轟擊毀熱蘭遮城的烏特勒支碉堡,使熱蘭遮城之破終成定局。十二月初八,荷蘭大員長官揆一修書予鄭成功,表示同意「和談」。幾經談判,荷蘭、終於在十二月二十日向鄭成功屈服,退出台灣。
鄭成功下令屯墾台灣的範圍,北達噶瑪蘭(今宜蘭縣),南至琅嶠(今屏東縣恆春),後因大肚平埔族拍布拉(Papora)族大肚王與琅嶠「番人」的反抗而減緩擴張;鄭成功實際的統治區域大約是從二林(今彰化縣二林鎮)到茄籐(今屏東縣佳冬鄉)的範圍之間。