1648年(順治五年、永曆二年)四月十八日,堵胤錫領導馬進忠、王進才部從駐地九溪衛(在今湖南慈利縣江埡西北)、永定衛進攻常德,二十四日攻克該城[14]。王進才部進至辰州(府治在沅陵)所屬的官莊坪、白馬渡。清偏沅巡撫線縉驚呼:“賊勢愈張,非獨常德一府失陷,而湖南、湖北百姓盡裹網巾,白布纏頭,擒殺縣佐,逼奪印信,公文阻隔,音信不通,大有可慮者。”[15]南明軍隊在四、五月間先後收複瀘溪、辰溪、黔陽、寧遠、新田、祁陽、安仁、耒陽、酃縣、城步、新寧、安化、江華、麻陽、東安等地。清辰常道戴國士見勢不妙,也以沅州(今湖南芷江)叛清歸明[16]。明保昌侯曹誌建在五月二十一日攻克道州後,會同郝永忠部圍攻藍山[17]。何騰蛟調集曹誌建、焦璉、胡一青、趙印選、盧鼎等部兵從七月十七日起圍攻永州(府治在零陵),到十一月初一日攻克該城,擒殺清廣西巡撫李懋祖、廣西總兵餘世忠,清永州通判酈胤昌投河自盡[18]。衡州(今衡陽市)的清朝文武官員見明軍聲勢浩大,主動放棄衡州,撤至湘鄉、長沙扼守[19]。
何騰蛟、堵胤錫節製的各部明軍雖然趁清軍主力撤出湖南的時機,收複了湘西、湘南許多州縣,但除馬進忠的軍隊以外其他各部兵力較弱,而且各自為政,難於承擔收複湖南全境、東援江西的重任。一旦清軍主力再度入湘也不是對手。製輔堵胤錫有見及此,決定親自前往夔東邀請英勇善戰的忠貞營進軍湖南[20]。李赤心(即李過、李錦,隆武時封禦營掛龍虎將軍印、興國侯)、高必正(即高一功)統率的忠貞營自1646年圍攻荊州被勒克德渾部清軍擊敗後,退到川鄂交界的大山區休整,先在巴東縣平陽三壩駐紮,1647年(順治四年、永曆元年)四月內從巫山、巴東交界處渡過長江,“頭入施州衛(今湖北恩施),尾在建始縣”[21]。順治五年(1648)七月初一日,李赤心領兵“數十萬”東下一舉占領湖北彝陵[22],九月即全營開至湖南常德。十月二十一日從常德進發,擊敗清總兵徐勇派來的援兵,二十四日收複益陽縣。十一月初一日分兵攻取湘潭、湘陰、衡山,初三日在湘潭擊敗清偏沅巡撫線縉、總兵徐勇部一萬餘人,占領該縣;初九日又攻克湘鄉、衡山兩縣。至此,長沙府屬十二個州縣已經被明軍收複九座,隻剩下府附郭二縣長沙、善化(實際上就是長沙一城)和瀏陽仍為清軍據守,長沙成了孤注[23]。十一月十一日,李赤心、高必正親統將校數十名率領兵馬包圍長沙,“臨城四麵攻打”,發“箭如雨,銃子落城中如雞卵,中人物皆斃”,五天五夜連番進攻,“掘城鑿洞”,誌在必克[24]。清偏沅巡撫線縉、總兵徐勇據城頑抗,但部下兵丁隻有三千名,外無救援。徐勇在城頭督戰時,被李赤心一箭射倒城上[25],攻克長沙已經指日可待了。清朝湖南巡按吳達在給朝廷的奏疏中說“一隻虎等賊於十一月十一日攻圍長沙,危在旦夕,幸眾將士血戰,方得保全。……長沙之圍雖十六日報解,而其勢益危”[26];偏沅巡撫線縉也說長沙“將至垂危”,十六日李赤心等大軍忽然“抱頭鼠竄”[27]。