总攻令在拂晓前半个时辰下达。传令兵沿着主营至各营的通道奔跑,口令以短促的单音节形式逐段传递,在晨光未至的暗色中沿着营帐之间的空隙扩散开来。火炮阵位上,炮手们正在做最后的装填。
炮膛已经清理干净,药包和弹丸依次送入,引信管插入了火门。南城墙四角的炮位都已完成准备,炮口朝向城墙的预定缺口位置,与线绳标记的仰角和方向一致。黎明前的气温很低,炮手呼出的白气在火把的光线中短暂显现,随即消散。
第一轮齐射在天边出现第一道灰白色亮线时开始。百门火炮几乎同时击发,炮声在晨光初现的时刻层层叠叠地压向城墙,弹着点集中在城墙四角和城门两侧的薄弱位置。南城墙中段的一处包砖墙在第二轮齐射后开始松动,砖石向外鼓出,形成了一道纵向的裂缝。
紧随其后的第三轮齐射击穿了该段墙体,碎砖和泥土向内外两侧同时迸溅,在内侧形成一道缓坡。第四轮齐射将缺口进一步扩大,缺口两侧的墙体边缘变得参差,内侧的坡面更加平缓。
火铳步兵在缺口形成后向前推进。前排的士兵穿越城前开阔地时队形未散,在接近缺口边缘时转为纵队,依次沿碎砖坡面向上攀爬。
第一名登上缺口的士兵跨过墙基,在墙内侧停稳,随后第二名、第三名接续进入,在墙根内侧形成一排横队,盾手在前,火铳手在盾阵后方排列。
后续部队沿缺口持续进入,在城墙内侧的通道上展开,向东西两个方向延伸,以城门为界分割城上守军。城墙上残余的金军在火铳和近战兵器的连续交替压制下,从城墙上不断收缩,最终退入城内街巷。
城门在辰时被从内侧打开。铁闩被抽离后,城门沿门轴向外旋转,门缝逐渐扩大至可供数人并行。周凯在城门内侧的通道上站定,观察城内主街的走向和两侧建筑的排布。沿街的窗户大多紧闭,有几扇半开的窗扇在风中微微晃动。街道上空无一人,只有几只散落的木桶和翻倒的推车横在路面中央,一根断裂的扁担横在街心,两端担着两只陶罐的碎片,破片散落在地。
巷战从辰时持续到午时。金军将残余兵力分散部署在内城街巷和官署院落中,利用街角构筑简易路障和工事,试图利用巷道狭窄、房屋密集的特点延缓北伐军的推进速度。
火铳步兵沿主街推进,遇到有路障的街口,先以火铳齐射压制两侧屋顶和墙头,再掩护步兵拆除路障或选择迂回绕行。清理完一段后,后续部队会继续向前推进,逐段推进。在部分街巷中,金军依托两旁的民房和院墙,在小范围内形成交叉封锁。
火铳手利用街角的墙壁作为掩护,交替射击压制对方火力,步兵在火铳齐射间隙向前推进,清理开阔地和建筑物之间的空当。
岳家军老兵穿插在主攻序列之间。他们在街巷推进中负责沿街肃清两侧巷弄,清理门面或围墙后可能藏匿的残敌,被清理的区域内陆续发现多具金兵遗体和散落的兵器、甲片,部分完好,部分已被踩踏。
一支小队在接近官署区域时遇到一处由拒马和沙袋堆成的防御工事,工事后方约十余名弓手和长矛兵在等候。火铳手在街角寻找掩体后开始逐次射击,几名士兵在盾手掩护下靠近沙袋堆,拆除最外层的拒马并解开了捆扎拒马的绳索。
工事的缺口形成后,各队沿缺口突入,守军在缺乏策应的状态下逐渐后撤,最终被压缩至官署后院,由步兵完成收尾。