又調集梅勒章京葛朝忠、白含真、佟師聖、夔州總兵盧光祖、左路總兵陳德、永寧總兵柏永馥等往攻重慶,初五日佔領合州,分水陸二路進逼重慶。
重慶明軍守將盧名臣因兵力單薄,無法抵禦來勢洶洶的數路清軍,遂於十四日放棄重慶。四月下旬,吳三桂派遣另一支由甲喇章京楊正泰、郭雲龍、右路總兵南一魁、敘州總兵馬化豹帶領的清軍進攻敘州,明守將王復臣、白文選自知不敵,主動撤退到永寧。至此,清軍除了原先控制的保寧地區外,相繼奪得成都、重慶、敘州、馬湖、邛州、雅州、嘉定、眉州等府縣。大半個四川盡入清軍之手,以致清廷以為全蜀漸次底定,應當講求善後經營天府之地,以四川之物力支撐其後對滇黔的攻勢。
正在湖南戰場於清軍對峙的孫可望得知四川不穩,清軍已佔領大半個四川后,惟恐清軍在四川站穩腳根後南犯貴州,遂派撫南王劉文秀統領援兵四五萬人分三路入川,由建昌、敘永、彭水展開全面反攻。八月初九日,明軍攻克敘府,據守該城的清兵全軍覆沒;總兵南一魁不知下落。總兵馬化豹隻身逃回,甲喇、牛錄死難者數十餘人。與此同時,孫可望麾下大將白文選也從永寧率部反攻重慶。
吳三桂、李國翰見明軍勢大,於八月十九日在夾江縣同四川巡撫李國英緊急會商,決定全師北撤以保萬全。駐守重慶的清軍將領梅勒章京葛朝忠、佟師聖、白含真、鑲紅旗章京尹得才、總兵柏永馥、陳德、盧光祖於八月二十四日接到吳三桂的撤退命令,二十五日渡江北還。同一天,明軍收復重慶,隨即派兵尾追清軍,在距離重慶一百二十里的停溪將清軍包圍。用火器四面圍攻。二十八日,清軍大敗,梅勒章京白含真被活捉,永寧總兵柏永馥帶著殘兵敗卒逃到保寧時。部下兵支離削弱,只收攏殘兵百餘人。
九月,吳三桂也率部退至綿州,接著又退到廣元。如此一來。清朝在四川的臨時省會保寧只有巡按御史郝浴和總兵嚴自明部下一百多名士卒。吳三桂、李國翰在兵敗如山倒的形勢下,已有放棄四川退入陝西漢中的打算。
巡撫郝浴卻以“不死於賊,必死於法”勸說吳三桂、李國翰不可棄守保寧。四川巡撫李國英也拉住吳三桂,苦苦相勸:“王乃客兵,可以還漢;巡撫乃守土之臣,當與保寧共存亡。王自回漢,巡撫當星夜回保料理守具。”說完便辭別吳三桂及李國翰,帶領手下的幾百營兵拔營回保寧。
李國翰見狀,猶豫之後對吳三桂道:“我等統領大兵恢川不得,若棄了保寧,丟了巡撫,我朝法度王所素知,復將何辭以對朝廷耶?”
吳三桂聞聽後醒悟,飛使追回李國英,問他道:“我欲去守保寧,巡撫可有糧麼?”
李國英道:“保寧糧雖無多,尚夠兵馬五個月支用。”
見保寧有糧可支撐,加上害怕失地保寧丟了巡撫的後果,吳三桂乃率部與李國韓一同回到保寧。
劉文秀在攻克敘州,追敗清重慶守敵之後,一路上所向無敵,導致生了驕敵之心,其部進抵保寧城郊後,在沒有充分把握的情況下,劉文秀決定強行全面攻城。吳三桂等眼看已經沒有退路,惟有困獸猶鬥、背城一戰才可絕處逢生。
十月初八日明軍主力齊集保寧城北,劉文秀登上東北山頭指揮攻城。吳三桂透過偵察得知攻城明軍中張先璧部戰鬥力最弱,決定集中兵力先打張軍。李國英為迷惑明軍,命部下綠營兵改打八旗正兵旗。
十月十一日黎明,劉文秀指揮大軍攻城,兵馬蔽山而下,炮聲震天,南自江岸,北至沙溝子,橫列十五里,前列戰象,次用火炮、鳥銃、挨牌、扁刀、弓箭、長槍,層疊裡許,蜂擁攻城。
辰時,吳三桂率部開門出城,直攻張先璧軍。張部抵敵不住,紛紛逃竄,敗兵把王復臣等部的軍隊衝得亂成一團。清軍趁勢鼓勇奮擊,明軍陣勢