就在李自成正忙著在襄陽建立政權、清除異己時,張獻忠冷不防地從安徽殺出,直奔武昌,並於崇禎十六年(1643)五月占領武昌,硬是從李自成口中搶走了這塊肥肉。
崇禎十五年(1642),張獻忠主要活動於安徽。他與“革、左五營”聯手,局麵雖不像李自成在河南那樣轟轟烈烈,但尚能維持。沒想到“革、左五營”見李自成聲勢浩大,便移師河南與其合營。張獻忠因與李自成、羅汝才有著說不清的恩恩怨怨,自然就不肯去湊熱鬧。
由於“革、左五營”的離去,張獻忠獨木難支,明顯感到官兵的重壓,於是便準備重回湖廣。不料朝廷看出了他的意圖,拚命堵截合圍,他隻得又重返安徽潛山的天堂寨山區,以避其鋒芒。此年十月,總兵劉良佐、黃得功率部偷襲潛山,把張獻忠打了措手不及,十分被動。
崇禎十六年(1643)初,當張獻忠獲悉湖廣的情況後,便再次決定進兵湖廣。當時的湖廣,實力已相當空虛,而且當時湖北麻城一帶的民變已鬧得十分厲害,形勢對張獻忠非常有利。
張獻忠迅速率部西進,一舉突入湖北,連克黃梅、廣濟、蘄州,大殺鄉紳,深受百姓歡迎。三月初,張獻忠攻下蘄水(今浠水),殺掉了是宿敵也是“恩人”的熊文燦的全部家族。接著,張獻忠又克黃州。當時,麻城民變正鬧得不可開交,從亂的奴仆已占據了縣城。他們派人來邀張獻忠。張獻忠大喜之下,急率精騎飛赴麻城,並於四月初六日占領了麻城。麻城一下子就有五六萬人投奔了張獻忠。
當張獻忠攻下羅田時,羅田諸生李時榮給張獻忠獻上了一條絕好的計策,建議張獻忠乘勢渡江,直取武昌。張獻忠隨即征調漁船,並於五月初五日遣先頭部隊於團鳳洲渡江,攻下武昌縣(今鄂城)。五月二十三日,張獻忠率全軍於鴨蛋洲過江。五月二十九日,張獻忠抵達武昌城下,開始攻城。