七月下旬,清方守备江宁的兵力已经大大加强,而郑成功顿兵坚城之下不攻不战,士气难免低落。
就在清军反攻前几天,郑成功命户官杨英巡视部队,竟发现前锋镇余新部下的士卒离开汛地到江边捕鱼。郑成功得报后很耽心余新轻敌“偾事”,说:“取鱼者伙兵则可,或战兵则事去矣。”
二十二日晚上,南京城里的满、汉官员认为时机已到,派汉族绿营兵打头阵,由梁化凤率领部下骑兵五百余名出仪凤门、管效忠领兵出钟阜门于次日黎明时分突然对郑军营垒发起冲击。
驻守在这里的余新等部盔甲器械都来不及披挂周全就仓促上阵,很快被清军击败,余新被俘。清军初战告捷,收兵在城外扎营。
当天晚上,郑成功依据形势的变化,重新部署军队,以观音山至观音门一带为集结地点,准备同清军决战。
派左先锋镇杨祖统率援剿右镇姚国泰、后劲镇杨正、前冲镇蓝衍屯扎大山上,作犄角应援;中提督甘辉、五军张英伏于山内;左武卫林胜、右虎卫陈魁列阵于山下迎敌。
他自己督右虎卫陈鹏、右冲镇万禄在观音门往来策应;后提督万礼、宣毅左镇万义等堵御大桥头大路;右提督马信、宣毅后镇吴豪、正兵镇韩英由水路抄蹑其后。
左冲镇黄安专门负责水师,防止清军由水上来犯。郑成功的这一临战部署显然是不正确的。因为清军已出城扎营,次日即大举进攻,郑军连夜移营,将士必然感到疲劳,也不可能熟悉地形,做好迎战准备。
江宁城中的清方大员在梁化凤、管效忠出战得胜后,决定在第二天全力出击。
具体部署:昂邦章京喀喀木、梅勒章京噶褚哈、玛尔赛、总兵梁化凤等率领主力由陆路出战。提督管效忠等领军由水路配合,总督郎廷佐等在城留守。
二十四日晨,清军从观音山后分路直攻杨祖部军,郑军四镇虽顽强抵抗,终因兵力不敌,几乎全线崩溃,前冲镇蓝衍阵亡,杨祖、杨正、姚国泰领残兵逃窜,山头遂被清军占领。
郑成功派右虎卫陈鹏、右冲镇万禄登山援救,但为时已晚。
清军乘胜由山上以压顶之势向明军猛扑,一举包围了驻守山谷内的中提督甘辉、五军张英部,二将领兵死战不得脱,甘辉被俘,张英阵亡。
列营于山下的林胜、陈魁两镇也全军覆没。后提督万礼等在大桥头遭到清兵首尾夹攻,兵败,万礼被俘,万义泅水逃出。
郑成功见陆师已经全线崩溃,命令参军户官潘