太平军金口东岸的花园营地位于武昌上游20里东,其外濒大江,内枕青林湖,太平军再此地挖了宽丈二、长三里的深壕:沟内用所掘土沙配合木材构筑三座木城,并在其内筑安装百尊大炮的砖壕;沟外二尺许钉犬牙交错的木桩,并在桩外在密植竹签、广撒荆棘。
太平军对岸的虾蟆矶营地,坚如磐石的程度不弱于花园营地。
两岸之间的河内有太平军战船左右呼应,这就是清军攻克武昌的第一道关卡。
为攻破此处关卡,湘军水师分先后两营;前队从中流急冲过烟关,直袭鹦鹉洲。太平军两营之间防守的太平军三百艘战舰见此急忙回援。湘军前路水师不与驶来太平军交战反从其两翼绕过,但太平军来不及多想就与湘军后队水师正面碰撞。大战不久绕到太平军舰队屁股后的湘军前队调转船头,从太平军后侧向太平军舰队发起猛攻。
太平军舰队在前后夹击之下还能坚持,但是相战不久。太平军的胆气就被打没了。因为太平军舰队没有统一调度,每遇水战都是采取“乱拳打死老师傅”的打法,即是混乱出击。这种战法在开始那段时间由于清军没有像样的水军,太平军凭借着船多人多的优势屡屡获胜。
在此战中太平军最凶悍的战舰十几艘五彩棚船,他们此前没战都冒死上前。但这次这几艘战舰刚冲上来,就被湘军水师秦国禄、张启基、郑沐等人各夺一艘。太平军的最猛战舰被连夺六艘,剩下的两百艘战舰见此纷纷跳水登岸逃跑。湘军水师乘势纵火烧船,太平军舰队顷刻覆灭。
就在这时东岸的罗泽南率军出手了,他命将士们兵分三路同时攻击太平军花园营地的三座木城。太平军在城内开炮阻击,一时间炮下如雨。但太平军这种程度的攻击对付乌合之众绰绰有余,但是对付湘军明显很吃力。太平军发炮时湘军伏地躲避炮火,炮停则匍匐猛进。三伏三进很快逼近太平军木城。
攻花园江边木城候选知县李续宾,率军从木城外的竹签、木桩的缝隙中从容越过壕沟,强攻木城。
攻花园湖边木城的罗泽南,在将太平军城外的数百艘划船焚毁后,强攻太平军木城。
李光荣及教谕唐训方强攻中路营地。
进攻三路清军至城边后,或翻越高墙,或穿炮眼而入,防守三营太平军抵挡不住纷纷焚营溃逃。
进攻西岸的魁玉、杨昌泗带队袭击虾蟆矶时,该营士兵见西岸营地和湖中战舰皆被焚毁,早已胆怯不已,如今见即将轮到自己纷纷越出壕沟四散奔逃。前来袭营的杨昌泗、魁玉当其立断留出一半兵马按原计划袭击虾蟆矶外,其余将士乘势追杀。
率兵猛追的杨昌泗在水师的配合下,顺势攻破太平军鹦鹉洲营地。
湘军水师在配合陆军拿下鹦鹉洲之后,并不收队。李孟群协同杨载福乘胜沿江直下,将太平军沿江所设木栅尽数破坏,后凭借水军优势放火箭焚毁太平军汉关营地一座还不罢手,继续前进又接连焚毁太平军白沙洲、金沙洲两座营地,继而攻进鲇鱼套口焚烧太平军战船数十艘,其中有一装载火药的大船。
夜深始收队回营。
此战清军攻破太平军九所营地,焚毁战船五百艘。东岸击毙太平军千人,生擒四十七人;西岸斩首四百,生擒百余人。江中击毙百余人,跳上太平军战船击毙六十余人。湘军水师战斗颇久伤亡十九人。