吴佩孚在败走武汉后,设司令部于汉口查家墩,即行调兵遣将。为了全力固守武汉,他决定放弃保定,调田维勤、王为蔚、魏益三等部南下,起用靳云鹗为“讨贼”联军副总司令,提升鄂军将领刘佐龙为湖北省省长,任命陈嘉谟为武汉防御总司令,刘玉春为武昌守备军总司令,高汝桐为汉阳、汉口守备军总司令,并电请孙传芳出兵湘鄂,邀陈炯明扰乱广东,以牵制北伐军后方。
吴军还未站稳脚跟,北伐军已于8月31日到达武昌郊外。唐生智鉴于第八军连续作战,疲惫过甚,伤亡太大,即令其在咸宁、贺胜桥一带铁路沿线,稍事休息与整顿,将追击残敌的任务交由第四、第七军担任。第四军因路线较直,跟踪追击敌军。但第四军以为猛进至徐家棚,可以防止残敌乘船东逃,并可出敌不意予以围歼,没有急于设法攻打武昌城。可是,第四军扑空了,结果让陈嘉谟、刘玉春率部乘隙逃进武昌城,紧闭城门,企图固守待援。如果当时第四军兵分两路,一面进攻武昌,一面以其主力指向徐家棚,在紧追而至的第七军的配合下,则可达到围歼残敌的目的。
9月2日,唐生智与李宗仁、陈可钰等在余家湾车站召开了军事会议,他们根据蒋介石“以八军攻汉阳,以四、七军攻武昌”的意思,确定如下攻城方案:第四军、第一军第二师、第七军第二路,主攻武昌;第八军、鄂军第一师进攻汉阳、汉口;第一军第一师为总预备队。蒋介石之所以做出这样的布置,是因为在他看来,武汉之险在汉阳龟山,那里又有兵工厂,吴佩孚必以重兵把守,定难攻下。相比之下,攻取武昌会容易一些,所以,蒋令第八军绕道过江去进攻汉阳、汉口,而让第四、第七军攻取武昌。蒋还做了这样的估计,万一第八军先攻下汉阳,而兵工厂亦必为刘佐龙所有。他可以利用刘与唐对抗。而且,蒋在贺胜桥战役后,将自己的嫡系、第一军第二师刘峙所部拨归第四军陈可钰指挥,打算在占领武昌后,让刘峙担任武汉卫戍司令,以便控制武昌,作为日后控制湖北的基础。
9月3日凌晨3时,北伐军向武昌城发起了攻击,终因准备不足、指挥不善和武昌城防坚固而未克。就在这一天晚上,蒋介石、加伦、白崇禧等从长沙坐专车抵达武昌。第二天,唐生智与他们在南湖前敌总指挥部召开了有前线高级将领参加的军事会议。蒋介石问攻打武昌的情况。唐生智说:“武昌城外面有一道护城河,城墙比较坚固,城内又有蛇山,守军较强,攻是可以攻下的,有两个办法正在进行:一是打了好几处地道,从地道突破城墙一个缺口,再从口子攻进去;另一个办法就是策动守城门的部队起义,我们已经找到了一个对象,是混成旅团长贺对廷。”蒋轻描淡写地说:“这还不好攻?我们攻惠州时,就是冲上去的。”唐生智则争辩说:“惠州城比这个城小些,矮些。”蒋介石固执己见:“我是有经验的。明天拂晓,我们第一军的一个师带头冲锋,你们也跟着冲上去。”唐生智见蒋主意已定,便说:“既然你下了决心,我们照办。”蒋吩咐道:“我直接告诉第一军的那个师,准备梯子,你这边也准备。”蒋下达了在四十八小时内攻下武昌城的命令。
第二天一早,开始第二次攻城。蒋介石同他的副官长张治中,打着绑腿,煞有介事地督战去。第一军第二师刘峙部和第四军第十、第十二师、叶挺独立团和第七军第二路等部队参加了攻城战。唐生智陪同蒋介石到刘峙部的阵地后方观战。各部向武昌城发起了多次冲击,终因城墙过高、敌军防守甚严、火力过猛而未奏效。打到将近黄昏时,死了好些人,还阵亡了一个营长、几个连长,根本就不能靠近城边,更莫说突破缺口冲锋陷阵了。
第二次攻城受挫,主要是蒋介石一意孤行、急于夺取武昌所造成的。他以为武昌一克,便可立即组织湖北省政府,进行发号施令,而不至于让湖北又落入唐生智之手。蒋介石为了与唐生智争夺对武昌乃至湖北的控制权,竟不顾武昌城易守难攻的现实,强行攻城,给北伐军造成了重大损失。
蒋介石见硬攻无望,夸下的海口无法实现,已经十分尴尬。加之,在攻城战斗中,刘峙谎报军情,给叶挺独立团造成了无谓的牺牲。叶挺当即指出“他们这一行为,不仅有假造军情之罪,而且有陷害同志之咎,必须从严处罚”。蒋介石本想让刘峙抢占头功,不料刘峙竟出此洋相,更令蒋羞辱有加。此时,加伦力主暂时停止进攻。于是,蒋介石顺势下令暂时停止攻城,勉强同意照唐生智原先提出的方案办。
在蒋介石督师攻打武昌的同时,唐生智第八军三个师和夏斗寅鄂军第一师发动了攻取了阳(汉阳)、夏(汉口)的作战。9月1日,夏斗寅师渡江后占领了新滩口、侏儒山,向蔡甸挺进。3日,第八军何键师赶至汉阳附近,与守军刘佐龙部靠拢。
吴佩孚防守阳、夏的主力,是高汝桐师、刘佐龙师等部,全部兵力约四万余人。北伐军入鄂前夕,刘佐龙已和武汉进步力量秘密联络。为了争取刘部起义,中共湖北省委和国民党湖北省党部、武汉特别市党部,一面发动和组织武汉工人积极支持革命军;一面深入刘部,对其进行争取、瓦解工作。经过积极争取,晓以大义,刘佐龙终于同意率部起义,配合北伐军进攻。
9月5日上午,第八军何键师和夏斗寅师进攻汉阳,直逼龟山。这时,刘佐龙令其弟刘鼎甲炮兵团掉转炮口,向高汝桐的指挥阵地开炮,掩护北伐军进攻龟山。高汝桐师驻防山顶,居高临下,猛烈阻击,北伐军仰攻受阻。高师得吴佩孚援军帮助,有恃无恐,顽抗到底,虽被包围亦不愿缴械。故北伐军攻夺龟山,三攻三挫,终不能克。为了打破僵局,刘鼎甲团复集中全部炮火,向龟山阵地和汉口查家墩吴军司令部猛烈轰击。吴佩孚见司令部遭到炮击,异常惊恐,乃秘密由江岸车站乘车北逃。主帅北遁,汉阳守敌军心动摇。
为了迅速攻占汉阳,唐生智增派第四师刘兴部加入作战。这时,汉阳兵工厂工人配合军队,打开武器库,夺取了大量弹械和军用器材,与北伐军里应外合,夹攻吴军龟山阵地。经过通宵激战,吴军龟山阵线崩溃。6日凌晨,高汝桐师放弃阵地而逃。第八军何键部终于占领了龟山。
汉阳一克复,前敌总指挥唐生智就命令鄂军刘佐龙师一部防守汉阳和龟山,并担任沿江警戒任务;刘师的另一部分,则协同第八军何键师主力,于6日晚强渡汉水,进取汉口。为了抢占滩头阵地,北伐军与顽强阻击之汉口守备军靳云鹗部展开肉搏,河水为之变赤。北伐军苦战多时,至子夜一时终将靳部击溃,直驱汉口市区。7日晨,全部占领了汉口。
在攻打武汉三镇的过程中,蒋介石不听劝告,督师强攻武昌城不克,反而损兵折将,已使他这位总司令丢了面子。而唐生智第八军接连攻下汉阳、汉口,并获得汉阳兵工厂的武器改善了装备,更使蒋介石气愤不已。正当蒋介石进退两难的时候,五省联军总司令孙传芳为援助吴佩孚,在南昌向北伐军发出了最后通牒,调大部队入赣,企图进攻平江、通山,以断北伐军后路,并相机增援武昌。于是,蒋乘机把攻取武昌的难题推给唐生智,并赌气地说:“我们到江西去,不要两湖了。”
蒋介石对唐生智说,他准备把第一军在鄂的部队调到江西去。唐生智不但未加阻挠,反而扬言第一军第二师等部“非调赣不可”,气得蒋介石无地自容,深感“忍辱含羞,莫甚于此也”。而且,唐生智还提出,如果照他的办法去攻打武昌,就是第四军也可以调到江西去。他准备让第八军承担攻城任务,把第四军支到江西战场去。一开始,蒋介石坚决不同意这样做,并且对唐生智进行了谴责。因为,蒋介石不愿意看到湖北又成为唐生智的一统天下,希望第四军能成为一支在武汉与唐生智相对抗的力量,甚至答应让陈铭枢担任武汉卫戍司令。于是,北伐军总司令部作出了让第四军和第八军一部对武昌实行封锁包围、让李宗仁率第七军主力挺进鄂东支援江西的决定。蒋介石不得不痛苦地面对现实,忍痛将武汉和湖北暂时让给了唐生智,他自己则带着几分羞辱和痛恨奔赴江西战场,转向长江下游另谋出路。
当蒋介石率部入赣时,唐生智曾提出让第七、第八军与其他部队一起去会攻江西。蒋介石担心唐借此与他争夺江西地盘,拒绝了唐的建议。后来,蒋介石亲自指挥部队强攻南昌,由于指挥不当,久攻不克,不得不调第四军从武汉前去助战。这样,又多多少少应验了唐生智原来的预言。通过第二轮唐蒋冲突,唐生智挤走了蒋介石,成了两湖战场名副其实的主帅。唐蒋矛盾更加激化,为国民革命留下了更大的隐患。
9月8日,唐生智把前敌总指挥部搬到汉口查家墩,并任命反正鄂军将领刘佐龙为汉阳、汉口临时保安司令。11日,刘又就任国民革命军第十五军军长职。