天堡城位於東郊紫金山第三峰(今紫金山天文台所在地),城高險陡,張勳在此駐紮江防軍一營和重機槍4挺、重炮10餘門。
北伐軍二路軍司令符墩子命蘇軍擔任主攻天堡城任務,激戰數日,蘇軍死傷眾多,仍未攻下。
這時,蘇軍指揮程德全窺探出了奧秘,主動要求加入民生黨,並宣誓向龍嘯卿效忠。
符墩子誇讚程德全懂事,隧為介紹人在南京城外指揮部內引薦程德全加入民生黨,張逸、蕭星恒等民生黨黨員作為見證人。
程德全宣誓加入民生黨後,符墩子不再讓蘇軍在前麵送死。轉而改為有粵軍主動,蘇軍和浙軍掩護兩翼的戰術。
21日,粵軍抽調各尖刀連精幹分子,由民生黨骨幹帶隊組成192人的敢死隊,冒雨強攻。
與此同時,粵軍二師調集全部重炮猛烈轟擊天堡城,壓製清軍火力。
經過一天一夜的戰鬥,粵軍於22日夜攻克天堡城。敢死隊隊長葉仰高壯烈犧牲。這一仗,北伐軍傷亡兩百多人,自北伐以來最大傷亡。張勳部堅守天堡城的守軍一千餘人全部被殲滅,山上山下遍布屍體。同日,側翼進攻的蘇軍和浙軍也攻占了雨花台,將清兵壓至南京城內,團團圍住。
張人駿、鐵良和張勳知敗局已定,遂請美國領事和鼓樓醫院院長、加拿大籍人士馬林出麵,要求北伐軍允其退出城。
符墩子命令守城清兵全部繳械投降,張勳所掠公款180多萬銀元必須全部交出,否則將於明天中午發起總攻。
當夜,張人駿、鐵良在下關乘上日本兵艦,狼狽不堪地逃離南京,躲進上海租界。期間,北伐軍早有準備,知道敵人晚上會跑,因此薩鎮冰率海軍艦隊封鎖長江,巡視下關江麵。
當張人駿和鐵良上了日本兵艦後,薩鎮冰率海軍將其攔下。
日本兵艦伊吹號艦長藤萍大佐強烈抗議廣東海軍,要求廣東海軍放行。薩鎮冰一開始並不敢攔截日本兵艦,發電報給廣州大本營得到龍嘯卿的授權批準後,方才對日本兵艦強硬起來。