個管衣甲的林姓官員叛變,偷入南京城,遍告鄭軍虛實。這個林甘福建海盜出身,由於攻破瓜洲後大肆淫掠,被鄭成功打了二十大板。懷恨在心之下,林某叛變。他親見郎廷佐獻計:“再過三天,鄭軍大舉攻城,南京必不可守!二十三日,乃鄭成功生日,諸將定會卸甲飲酒慶賀,必不為備,可偷襲擊破!”然後,他把鄭軍何地是實營,何地是虛營,一五一十,皆一一細報清軍。
郎廷佐抓住機會,命令守城清軍十人留一人,其餘俱下城結營,準備先發制人,準備出擊。
七月二十二日夜晚,梁化鳳率領綠營兵先出,以作“炮灰”,觀察鄭軍反應,試探虛實。仔細巡察後,梁化鳳從南京的神策門出發。這個神策門,本為已經堵砌的廢門,從城外看上去,由於蘆葦野草滿野,根本發現不了。清軍手中有工程圖址,在內裡偷偷拆卸,神策門就成為一個“突門”。
牆磚被推垮後,梁化鳳很猛,率手下綠營兵就朝鄭軍衝過去。
鄭軍在神策門一帶的主將是餘新,當時他正和鄭軍另外一個大將甘輝正在聽戲飲酒,聞報大驚,即刻披甲上陣。
餘新勇猛,指揮士兵力戰,清軍小卻。郎廷佐見情勢不妙,立刻又派出一個分隊,從南京小東門突出,掩襲鄭軍。
餘新等人不敵,鄭軍潰敗。不久,餘新本人被清軍活捉。
首戰告捷,清軍自信心大增,主力皆出,於南京城外紮營。
由此,清軍由守勢變為攻勢。
鄭軍大將甘輝等人齊入主帳,與參軍潘庚鍾等人一起見鄭成功,勸說把軍隊退屯觀音門一帶,乘勢再進行進攻。
事已至此,鄭成功剛愎自用,反倒急欲與清軍決戰。他自作主張,指揮主力全部結營於觀音山,準備依山就勢,要與清軍大戰一場。
郎廷佐見鄭軍結營,趁早晨鄭軍新集未穩之際,立刻揮兵攻擊。鄭成功本人仍在指揮調動,而山下受攻擊的鄭軍只得一邊死命抵擋一面上報。
鄭成功軍令極嚴,其餘各部不敢輕易出戰,只得眼看清軍集結主力死攻鄭軍一部。其餘諸部怕違背軍法不敢相援,眼睜睜看著清軍逐一擊破友軍。
甘輝身中三十餘箭,手殺約十人,力不能支,終於潰走。退走途中,甘輝力竭被擒。
鄭軍諸營動搖。
至此,坐鎮指揮的鄭成功心亂,但仍舊不發進攻命令。
鄭軍大將林勝焦躁,對士兵講:“敵人雖勝兩陣,兵力不多,藩主不發號令讓諸營聯合反擊,實誤大事!”於是,不等鄭成功命令,他率手下士兵向清將梁化鳳所統騎兵發起攻擊。
時兮命兮,林勝之軍剛剛衝出,恰遇東門清軍忽然從城中出來加入戰鬥,二部清軍合擊,林勝部鄭兵正好處於合圍之下,拼鬥血戰,全部戰死。
望見諸營潰敗,人在山頂的鄭成功對參軍潘庚鍾講:“你在本王傘蓋下替我坐鎮指揮,不可去蓋。我下山到水軍大營,催 軍從後面抄殺。”
鄭軍水營一直泊於江邊,踞南京城二十多里。郎廷佐在鄭軍剛到之時,就派軍士假扮百姓,遍載酒肉柴木,天天到海邊與船上鄭軍士兵買賣交易,暗伺虛實。剛開始的時候,這些奸細不敢貿然接近鄭軍的大船,後來雙方感情日益“融洽”,奸細們隨便入營交易。鄭軍兵士毫無防備,水師大營內的佈置情況被清軍偵知無遣。特別是鄭軍幾隻裝滿火藥的大船,被清軍死死盯上。
岸上戰鬥打響,清軍奸細暗挾硝磺瓶,接近火藥船後,點火拋入艙內。四隻大船爆炸,所有火藥全部報銷,順帶燒燬鄭軍大船數只。
剛剛趕至門邊的鄭成功正好趕上大爆炸,登時心驚,他也顧不上召集水軍對岸上清軍進行反包圍了,反而上船催水師逃走。
岸上敗北的鄭兵逃往岸邊,忽然發現大船皆空,非常絕望,但仍舊邊戰邊退,往山上撤退。清軍不捨,尤其是漢人綠營兵敢戰,與鄭軍搏殺在一處,難解難分。
清軍八旗騎兵漸聚,大隊人馬湧上山頂。然後,清軍精騎借勢猛衝,一下子把鄭軍士兵衝潰,把他們又逼回江邊。
無奈之餘,鄭軍士兵,尤其是那些重甲精銳,皆投江而死。
清將梁化鳳見觀音山上有鄭成功的傘蓋在,拼死上前,率士兵猛攻。鄭軍士兵殊死拼鬥,但清軍合圍兵多,潘庚鍾持劍指揮,最終與屬下士兵全部戰死。
南京之役,鄭成功手下大將除甘輝、潘庚鍾、萬禮、張英、林勝、藍衍、陳魁陣亡外,還有副將魏標、林世用、洪覆等人,皆搏鬥死於軍中,損失不可謂不慘重。