洪秀全带领数十万太平军从武昌直驱南京,南京战役是从明朝以来,汉人军队首次全歼一支八旗军战役,而且也是一次战役歼灭八旗军最多的战役。
当时在南京的八旗军首领是满洲镶红旗的钦差大臣兼署两江总督,江宁将军的祥厚。这里也是八旗军在东南地区最大的驻军地,有3000满洲披甲和1000蒙古披甲,合计4000八旗军驻防,加上家人、奴仆有2万多人。
咸丰三年1月28日,太平军先锋李开芳冲到南京城下,汪士铎称太平军:“破江宁日,口称二百万,七八十万人足数也,自城外至江东门一望无际,横广十余里,直望无际,皆红头人”。
太平军以数千斤大炮昼夜轰击城墙和城门,并且开始挖掘多处地道,采用大量火药轰城,城内的天地合全面起来暴动。2月10日,太平军三处地道爆炸,在大炮与地道炸药的共同作用下,太平军终于从仪凤门突破,但是遭到八旗军反击,突入的太平军突击队都被歼灭。
随后,太平军从聚宝门在内应接下再次实现突破,但是八旗军退入满城继续坚守,东王杨秀清亲自指挥数万太平军发动冲击,八旗军所有人都上城抵抗,就连女人也拿起了刀矛和鸟枪,老人和孩子就在旁边呐喊助阵。
八旗军打的非常疯狂,太平军几次攻击失败,在城下堆积了数千尸体,随后,东王继续调动更多的太平军连续发动冲击,想实现真正的突破。就这样战斗了好几天,城内的八旗军已经有人“力尽气竭而死”。
最后,太平军终于冲进满城,八旗军首领祥厚等人自杀,洪秀全下令全城抓捕旗人,抓住一个无论老幼男女赏白银5两,最后杀光了城内所有的2万旗人。但是太平军南京攻坚战,也损失了数万老兵。
由于太平军虽然有70-80万,但是真正的战斗部队只有十几万人,其他都是家属和沿途拉来的各种老百姓,南京一战损失数万战斗兵,又要发动西征夺取安庆、九江、武昌等地,还要保护南京的安全,因此只能派出2万人北伐,丧失了最佳机会,这也间接导致了太平天国最后的失败。