军需主任将武器运回去一个月,革命军出师北伐,作为先锋的第四军独立团和第七军向湖南进发,迅速攻占了长沙,随后挥师向着武汉进发,左纵队(第8军)和右纵队(第4、第7军)攻取岳阳、平江,直指武汉;第2、第3军、独立第1师和第5军第46团集结醴陵、攸县等地,对江西警戒,掩护北伐军侧背安全;黔军改编的第9、第10军从湖南常德地区进取湖北沙市、荆门,相机占领宜昌、襄阳;第6军和第1军第1、第2师为总预备队。
北伐大军相继入湘,分成左,中、右三路,向湘北直军发动进攻。8月19日,中央军向汨罗江北岸发起进攻。右纵队第4军进攻平江,其右翼第10师从托田渡汨罗江进占肥田,左翼第12师借其掩护,由白雨湖渡汨罗江,一部向天岳山、鲁肃山实施佯攻,一部向平江城东北攻击前进,经过激战,守军由北门退入城内。独立团向平江城东门猛攻,击退守军,攻入城内。平江守军1个旅被缴械。与此同时,右纵队第7军第1、第2旅分别占领浯口、黄塘后,在将军坪击退顽抗之敌,迅速向张家牌前进。第8旅猛攻将军山,遭守军反击。第7军使用预备队从两翼投入战斗,击退守军,攻占张家牌。左纵队第8军于同日渡过汨罗江后,未遭抵抗,即分别占领长乐街、黄谷市。之后,左右两个纵队乘胜前进,至8月22日连克岳阳、通城、羊楼司等地,开始进入湖北境内作战。在此期间,吴大帅率部协同奉军在直隶南口等地将革命军击败后,调兵南下,亲率湖北暂编第4师和陆军第8师于8月25日抵达汉口,令自岳阳、通城败退的湖北暂编第1师和卫兵旅等部共万余人固守湖北咸宁地区汀泗桥,并派第25师第13混成旅另1个团增援。另以陆军第8师进至贺胜桥地区设置坚固阵地;武卫军占领纸坊,鄂军第3旅及部分湘军残部在白螺矶、新堤、嘉鱼一带,协同海军阻止国民革命军渡江。
8月25日,国民革命军第四军独立团作为第12师的前卫,奔袭粤汉铁路上的中伙铺车站,歼灭直军1个团;第10师进占杨泉畈。第7军占领大沙坪、桂口市。第8军占领临湘、羊楼洞、蒲圻等地。第8军攻取汉阳、汉口,第4、第7军沿铁路北进,攻取武昌。
第12师第35团在高猪山击退直军一部的阻击,进至铁路桥头,遭对方火力封锁;第36团进至汀泗桥东南高地前,遭敌俯射,前进受阻。第10师第29、第30团分别在第36团两侧展开,激战入夜,仍无进展。第36团乘夜暗实施中央突破,也未得手。第12师决心以独立团和炮兵营向汀泗桥东北的古塘角迂回,从右侧后包围歼敌。27日凌晨,独立团从小路隐蔽接近古塘角,配合正面部队的全线攻击。直军遭前后夹击,全线溃败,被俘2400余人,残部向北逃遁。第4军占领汀泗桥。独立团乘胜猛追,当日中午攻占咸宁城。吴大帅亲率湖北暂编第4师和陆军第8师及在汀泗桥战役中败退的残部共2万余人,在贺胜桥及其以南的杨林塘、桃林铺、王本立地区梯次设防,企图死守。国民革命军不给直军以喘息之机,于1926年8月29日由第4、第7军发起贺胜桥战役。第7军第8旅在袁家铺附近击退直军约1个团的抵抗后,向王本立前进,途中遭直军反击,被迫后撤。第4军第12师在杨林塘附近与直军激战后,形成对峙。30日拂晓,第4、第7军继续攻击,叶挺独立团猛打猛冲,在杨林塘突入直军主阵地,向桃林铺攻击前进。此时,直军一部从侧翼反击,企图对叶挺独立团实施包围。第10师第28团和第12师第36团适时增援,协力抗敌,突破直军桃林铺防线,向贺胜桥发展进攻。第7军攻占王本立后,迅即向贺胜桥东侧的南桥攻击。直军正面失利,侧背受敌,全线动摇,纷纷溃退。国民革命军于当日上午占领贺胜桥,俘敌3500余人,中路第四,第七、第八军主力全线击破汨罗江直军防线,继在汀泗桥、贺胜桥打败直军主力,进围武昌,一部绕道攻克汉阳、汉口,前锋进追武胜关。吴佩孚迅速集结兵力,企图凭借长江、汉水固守武汉。部署以陆军第3、第8师和第25师等部守备武昌;陆军第14师守备汉阳、汉口;另以湘军残部在沌口、金口,武卫军和河南第10师在阳逻、黄冈,湖北暂编第2师和河南暂编第2师在蔡甸、沙洋,第13混成旅、浚滑游击队等部在汉口附近地区,保障武汉的安全。国民革命军于9月1日包围武昌城。2日,前敌指挥部决定以第4军并配属第1军第2师和第7军第7、第8旅主攻武昌城;第8军继续准备进攻汉阳、汉口;第7军第1、第2旅在鄂城、樊口遮断直军长江交通,掩护攻城部队侧背安全;第1军第1师为总预备队,在崇阳待命。由于武昌城墙高筑,直军防守严密,攻城部队在缺乏周密准备的情况下,先后于3日、5日两次攻城,均未奏效,且伤亡甚重,遂对武昌改取封锁围困。