水军出身的罗大纲毫不示弱,率领七八条义军的小船应战。他非常沉着,指挥小船快速在清军大船中间穿插,并丟掷火瓶。
清军战船浓烟滚滚,损失严重,数百人落水。剩余的船只被罗大纲引诱到小刀会炮台的射程内,又被击沉数艘。
这一下清军的船队全乱了,罗大纲抓住战机重新反击。重创清军战船,并俘获了一艘炮舰。
清军总兵实在没有办法,带领残军败将逃入外国码头,这才躲过一劫。但经过这一战,清军的水军被杀得完全没有了战斗力,再也不能单独出战了。
但上海县城的危机依旧没有解除,清军巡抚吉尔杭阿和总兵虎嵩林率领一万多清军包围了上海县城。
并在县城西北发起进攻,先头部队几百人呐喊着向起义军冲击,抛掷大量的火球等其他投掷物,然后树起云梯登城,已有七八人登上了城墙,同时大量清兵冲出军营,用火绢枪、火铳和其他武器向城墙射击。起义军吹响螺号,在罗大纲等人的指挥下奋勇还击,向敌人投掷火弹、火罐、灰包和巨石,战斗非常激烈。
登城的敌人很多打得坠落下去,已上城墙的敌军寡不敌众,当场被击毙数人,其余见势不妙,跳墙而逃。在起义军的猛烈火力攻击下,敌人只得撤退。与西北面清军相呼应,南面清军也展开攻势,重炮轰城,轰塌城垛多处,并施放火箭,点燃城上的起义军帐房。
与此同时,总兵泊承升率领剩下的战船,在小东门码头一带,向起义军炮台偷袭。起义军以炮火还击,炮声轰轰,连绵不绝,一直持续了几个小时,最后敌船退往苏州河口。
这一天,起义军经过浴血奋战,打退了敌人从三个方面的进攻,保住了上海县城。
但清军不甘心失败,在城西四明公所内偷偷修筑炮台,运来一门门强火力的大炮。同时清军又在营盘内造好许多高台,与城墙一般高,顶上作成倾斜面,以便作战时把这些高台放在城墙边登城。清军还在高台上面演习攻击,这些高台,实际上是一种较稳固的云梯。经过一番准备和策划,清军开始了大规模的连续攻城。
四明公所的炮台安装完毕,清军便发炮轰城,同时在县城的北门和南门外攻城,起义军顽强抵抗,打退了敌人的一次次进攻,打死敌人19人,打伤多人。
次日大雾弥漫,清军携带云梯、喷筒,准备乘雾袭击县城,起义军也装扮成清军模样前往袭击四明公所炮台,两军相遇展开激战,起义军边战边退,直到日出雾散,才返回城中。这次战斗,起义军击毙清军千总陈镇川等人,打伤数十人,自己也有些损失。
之后连续几日,清军从北面、西面和南面向上海县城发动全面攻击,在两个小时内耗尽所有弹药。起义军在多于自己数十倍敌人的攻击下,英勇地坚守着阵地,向清军发起数次冲锋,最后打退了清军的进攻。
清军连续七昼夜的进攻,妄图夺取上海县城,在起义军的严密防守和猛烈反击下,清军屡遭失败。
清军恼羞成怒,在城郊的烧杀抢掠,犯下了滔天罪行。上海县城东郊,原是繁华的商业区,民房店铺栈号相连。吉尔杭阿指挥清军在这里放火,使小南门至大、小东门一带的2000多间房屋被烧毁。原来人烟稠密,非常富庶的东郊,竟变成凄凉无人的地带了。清军趁火抢劫,大批赃物被他们无耻侵占,发了一笔战争财。
经过这么多天的猛攻,清军都不能攻破上海县城,通过战场的磨练和罗大纲等将领的指挥,小刀会的起义军也迅速成长起来,不再是一支孱弱不堪的队伍,而是一支意志坚定,能打硬仗的军队。