順治十四年(1657)四月,鄭成功因地方頻得頻失,終無了局,召諸參軍集議中興大計。吏官潘庚鐘、工官馮澄世、參軍陳永華都主張進軍江南以號召天下。鄭成功從其議,派人前往廣西請桂王旨,令孫可望、李定國集滇、黔、粵、楚之師,出洞庭而會江南,以分其勢。七月,鄭成功率軍北伐,八月入海門堯臺州,九月,天臺、太平、海門衛相率歸附。但浙閩總督李率泰偵知鄭軍精銳北上,乘機分兵攻陷羅星塔和閩安鎮。鄭成功擔心兩島有失,只得暫時回師。
十二月,永歷帝晉封鄭成功為潮王,其余侯伯印數十顆。鄭成功設長史、審理、典寶、典杖、典膳等官,壹切照王府行事。
五月,鄭成功傳令準備北征。重頒出軍十條禁令,不準奸淫、擄掠婦女,不許擅毀民房,不準擄掠男子為夥兵(防奸細投毒),沿海歸順地方不準混搶,不許擄掠、宰殺耕牛,不許借坐給牌商船。違者本犯梟示,將領連罪不貸。十三日,分全軍作三程:中提督崇明伯甘輝領兵二萬五千,配船五十只,為首程;右提督建威伯馬信領兵二萬,配船六十只,為二程;後提督建安伯萬禮領兵二萬,配船六十只,為三程;鄭成功親自領兵四萬,配船壹百二十只,為後合,號稱八十萬,浩浩蕩蕩,向北進發。
六月,招降平陽、瑞安、進圍溫州,全浙震動。
七月初九日至羊山。初十日午,颶風驟起,巨浪排空,雷雨交加,天昏地暗。酉時風浪始息,船只翻沈五十余艘。將士死八千余人,其余傷損無數,鄭成功的六中軍船也被打破,他的第六妃嬪和四子鄭睿、七子鄭裕、八子鄭溫,並船上男女老幼二百三十壹人俱沒水中。鄭成功只得回師舟山,休整船只部伍。
順治十六年四月十九日,鄭成功在羊山之難以後經過半年多的整補恢復,聞清朝於頭年二月調遣三路大軍進攻雲貴桂王政權,乃再次大舉北征。為了舉手制勝,首先壹舉攻克定海關炮城,進入寧波港,盡焚清軍船只。待清朝撥浙直之兵來援時,鄭成功已抽兵下船,揚帆北上了。
五月初四日,師至舟山,再以軍紀曉諸將:“此行我師壹舉壹動,四方瞻仰,天下見聞,關系非細。各提督統鎮十余年櫛沐親勤,功名事業亦在此壹舉。當從恢復起見,同心壹德,***襄大事。進入京都之時,凡江中船只貨物,準其插坐,但要和衷,不準爭競;其岸上地方百姓,嚴察秋毫無犯。”
十八日,師至崇明,清總兵梁化鳳斂兵堅守。鄭成功欲順風入取瓜州,張煌言、馮澄世都主張先取崇明以為後援之地。鄭成功認為崇明城小而堅,取之必遲延日月,若得瓜鎮截其糧道,然後乘勢取江南,則崇明不攻自破。遂於十九日移泊吳淤口。清蘇松提督馬逢知有反正之意,鄭成功乃密書約其***圍南京。
六月十三日,師抵焦山。十五日,縞素祭奠崇禎、隆武,慟哭誓師,三軍皆泣下。水陸齊迸,先攻瓜州。
鎮江至瓜州江面十裏,清軍以百萬巨資,用大木以兩岸向江心築起長壩,橫截江流。左右復立木柵,內布火炮火銃,再以圍尺大索牽接木壩兩端,拒扼海舟,名曰“滾江龍”。鄭成功以左右武衛屠中,甘輝居左,翁天佑居右,直搗瓜州。材官張亮督善泅水者首先斬滾江龍,鄭成功揮兵大進,遂克瓜州。擒操江巡撫朱衣佐至,鄭成功說:“此腐儒也,殺之徒汙吾劍!”放歸。為了控扼上遊,截斷清軍江、楚之援,鄭成功特委張煌育率領壹支水師進軍蕪湖。
十九日,鄭成功進泊鎮江南岸七裏港,二十二日夜抵銀山。當時南京洪承疇部下的羅將軍領鐵騎千人赴援已至,其兵鐵甲如雪,大言道:“這些海賊不夠吾殺!”於是自為第壹隊,江寧提督管效忠領兵為第二隊,蘇、常四府之兵依次隨後而進。羅兵驕躁求戰,直沖鄭成功中軍營。鄭成功親督左右武衛親軍當其鋒,幾進幾退。銃炮齊發,聲震天地。鄭軍奮勇死戰,(歷史:)無不以壹當百,羅兵披靡。管效忠又督其余各隊來沖。銃炮矢石,密如雨點。鄭軍猛沖其陣,清軍大潰,遍野橫屍。管效忠部率四千人,僅存壹百四十人,嘆道:“吾自滿洲入中國,身經十有七戰,未有此二陣死戰者!”清軍既敗,鎮江守將高謙、知府戴可進、太平府守將劉世賢相繼獻城降。揚州文武各遁,百姓以彩旗羊酒到鎮江請師。句容、儀真、滁州也先後納款。江南各地人民十多年來不見明朝衣冠,今日明朝大軍重來,人心為之鼎沸。
二十八日,鄭成功集諸將議取南京。潘庚鐘、甘輝力主暫住瓜州,遣將分據淮揚諸郡,然後再圖進取。鄭成功不聽,甘輝又請陸行。但大軍遠來,不習水土,士卒多病,時又酷熱多雨,溝河難過,不得已由水路進發。
七月初七日,師至南京城外觀音門。鄭成功命黃安總督水師泊三汊河口,堵禦清船,親領大軍由鳳儀門登岸,紮營獅子山壹帶。
江寧提督管效忠自鎮江敗回南京,與江南總督郎廷佐、駐防昂邦章京喀喀木堅守不敢出戰。前在瓜州被鄭成功釋放的朱衣佐,這時又單騎入城,建議管效忠卑詞寬限,麻痹鄭成功,然後破敵。效忠依計派人到鄭成功大營請求道:“大師到此,即當開門延入,奈我朝有例,守城者過三十日,城失則罪不及妻孥。今各官眷口悉在北京,乞藩主寬三十日之限,即當開門迎降。”潘庚鐘當即指出:“孫子有雲:‘辭卑者,詐也;無約而請和者,謀也。’此乃緩兵之計,不可憑信,可速攻之!”甘輝也說應當立即攻取南京,別圖進取。鄭成功因江上獲得兩次大捷,已有驕心。且以所約蘇松提督馬逢知之兵未至,遂不聽諸將勸告,竟許敵請。
張煌言至蕪湖,相度形勢,出溧陽,鎮池州,拔和州,入寧國,往來於姑蘇、常熟之間,傳檄郡邑,大江南北,四府、三州、二十四縣相率送款。他見鄭成功圍城不攻,也上書勸道:“頓兵堅城,師老易生他變。亟宜分遣諸師,盡取畿輔諸郡邑。”但鄭成功接書,為時已晚了。