面对着张献忠、李自成复出的消息,在京城的杨嗣昌坐不住了,主动上书请罪,并表示愿亲去前线督师,力剿农民军。杨嗣昌1639年秋季抵达襄阳,依照崇祯皇帝的旨意,马上将熊文灿送往京师,襄阳是围剿农民军的前方基地,杨嗣昌到达后进一步加强了这里的防御。
在杨嗣昌一线督师之初,确实连续打了几次大胜仗,并且杀伤大量农民起义军将士。这使得他颇为得意,以为剿除张献忠只是一个时间的问题了。但在此时,他与左良玉、贺人龙等主要将领之间的矛盾开始日益激化,他们已根本不再听从指挥,调度越来越困难,这使得官军无法齐心协力地围剿农民军,因而多次坐失良机。1640年冬季,张献忠、罗汝才两部采取“以走制敌”的战略要术,张、罗二人牵着官军的鼻子跑,连续攻克了四川的诸多州县。他们在四川腹地转战了四个多月,整个四川都为之震动。在四川转战的这段时间,张、罗二部的农民军力量都迅速得到壮大。
1640年,李自成又率领部下从巴西大山深处突围而出,转入河南。李自成在河南进行了短时间的休整,这时他的队伍扩充到大约千余人。杨嗣昌一直在密切注意着李自成的去向,当他得知李自成攻入河南后,立即命令王光恩、刘洪起等将领率兵由兴安入河南进剿。让杨嗣昌没有想到的是,李自成入河南后没有南下,而是向东活动。他率众由内乡攻到重镇南阳。
李自成这次到达河南后,他的力量十分迅速地得到了壮大,这与他贴身的谋士到处高呼“迎闯王,不纳粮”的口号有关。当时的百姓害怕加征税收,怨声载道,到处是流浪的饥民。“迎闯王,不纳粮”的口号对这些饥民简直是太有吸引力了,给他们带来一线生存的希望。再加上李自成“不杀平民只杀官”等口号,也正合乎老百姓痛恨官府的心理,所以许多农民便纷纷加入到李自成军中。李自成每攻破一地,就将官府和豪绅富户的粮食拿来救济贫民,这与官府的苛捐杂税和加征形成了鲜明的对照。这也是李自成能顺利进军的重要原因。加上小股农民军的纷纷归附,李自成的队伍在河南发展迅速,没过多久就发展到数十万人。
1641年初,李自成农民军一举攻陷偃师,杀死了知县徐日泰。随后,李自成又连续攻破了灵宝、新安、宝丰等县,洛阳的外围基本上让他控制住了,为攻占古都洛阳做好了充分的准备。
李自成扫清了洛阳的外围以后,就开始集中力量攻战洛阳。当时,洛阳是河南府驻地,也是崇祯皇帝的叔父朱常洵藩封之地,再加上它是中国历史上的古都,所以不论在政治上还是在军事上,洛阳都占有非常重要的地位。李自成之所以要全神贯注攻打洛阳,一是由于洛阳有着重要的战略地位,二是因为这里“富甲天下”,攻克了洛阳就解决了农民军的钱粮问题。
1641年初,李自成率数十万大军围攻洛阳城。起义军由北门攻城,守城士兵及一些中下级军官毫无斗志,纷纷投降。农民军像潮水一样涌入城内,百姓夹道欢呼,而后,义军覆盖洛阳全城。福王朱常洵及其官僚全部被活捉。福王朱常洵一改往日的威风,吓得面如死灰,跪地求饶。李自成看着这位庸王,怒斥了一通。命士兵打了四十大板后处死了。随后,义军发布告示,王府中没收的金银财宝、粮草除一部分作为军饷外,其余全部分给饥民,李自成向洛阳百姓宣告:“我李自成今天杀掉贪官污吏,是因为他们不顾百姓的死活,农民军是为百姓谋利的!”一席话说得百姓们热泪盈眶,一些农民纷纷参加农民军,进一步壮大了李自成的声威。
攻占洛阳对李自成来说是他的一次重大胜利。他起事十余年来,还一直未攻克过这样大的城市,也从来没有处死过一个藩王。通过对洛阳的征讨,他看到了明王朝的虚弱,也感觉到自己力量的强大,是到了向明王朝展开更有力进攻的时候了。
当李自成攻打洛阳时,驻守开封的副将陈永福急忙率兵飞驰增援洛阳。陈永福还没来得及赶到,洛阳已被李自成攻克。李自成得知开封防守虚弱,就决定尽早攻克开封。
李自成大军向东进发,赶到开封城下,随后大举攻城。开封官军守城的情况就比洛阳要好,不仅没人暗地向农民军投降,而且官兵都表现得十分勇敢。一些乡勇纷纷进城,和官军一道与李自成农民军对抗。李自成率领农民军,围困开封城达两个月之久,城仍然没有攻下。李自成没有办法,最后,只好放弃了开封城,下令撤兵。
1641年冬季,义军再攻开封,虽未成功,却使崇祯帝大为恐慌,急调左良玉部由荆襄北上,任命王乔年为兵部右侍郎,火速进军河南。1642年初,汪乔年、左良玉进入河南,再次围攻闯王。诡计多端的左良玉一进河南,就占领了义军的囤粮之地——临颍,李自成闻讯后火速赶到,左良玉败退,双方在郾城旗鼓相望。在这紧急关头,汪乔年又施诡计,偷袭农民军的粮饷重地——襄城,以解郾城之围。而后,襄城沦陷,汪乔年大喜过望。谁知第二天,李自成率军赶到襄城,环城而攻,一连杀死了明军几员大将。此时左良玉并未实施汪乔年的前后夹击法,而是向南逃去,几天前还气势汹汹的汪乔年,几天后便沦落为孤家寡人,终于被义军活捉杀死。
李自成在襄城俘杀总督汪乔年以后,他所率领的队伍声威大震,河南的很多州县不战而下,不攻自破。李自成农民军扫清了开赴开封的障碍后,第三次攻打开封。李自成这次改变了战术,不再利用强攻的方法,而是实行长期围攻,使得开封不攻自破。同时,围攻开封之时定会有官军来援,让援军先聚集到一起,然后一起消灭掉,正可以起到“围点打援”的作用。
明廷这时感到十分惊慌,崇祯皇帝急忙命令督师丁启睿前往开封解围,双方会战于开封城外的朱仙镇。李自成为了防止落入明军前后夹击之势,伪造了左良玉的箭令,对守城明军大呼,叫他们不要轻易出城迎战。明军果然中计,闭门不出,这就解决了农民军的后顾之忧。农民军随后猛烈反击,打得左良玉、丁启睿纷纷逃走,明军全线溃散,义军大获全胜,开封城势在必得。此时的开封城已经成了河南明军势力的聚集地,他们坚守城池,重兵把守,强迫青年男子守城,造成户户皆兵的气势。
李自成三围开封后,改变策略,实行包围战,控制通往开封的所有交通要道,断绝守军同外面的联系。三个月里,开封城内顽固的明军已是困兽犹斗。在这种弹尽粮绝的情况下,开封守军自感胜利无望,便派人扒开了黄河大堤,滔滔的洪水霎时间淹没了开封城,而当官的却乘船逃跑了。
开封被淹,更深了老百姓对于大明王朝的怨恨。在起义军的努力奋战之下,终于攻下了开封,扼住了明政府的咽喉。在两三个月内,李自成率领的农民军以破竹之势占领了黄河以南的五府三十五个州县,取得了中原大战的全面胜利。