李自成投奔“闯王”高迎祥部后,驻扎在山西的高迎祥和张献忠等队伍被明朝大将曹文诏率领的军队击败,并逃奔河南。在河南,则被曹文诏、左良玉等多路明军包围。高迎祥、张献忠和李自成等被困在黄河边,深感危急,军师牛金星献计贿赂明朝监军太监杨进朝。杨进朝信以为真,上奏朝廷,同时下令禁止明军进攻。
趁著这个机会,李自成下令连夜打造船只渡河。可令人难以相信的是,是夜天气突然变得十分寒冷,黄河水也结了厚厚的冰,显然是上天在相助。高迎祥、李自成等大喜,连夜率部众渡过黄河,到达南岸。
南岸明朝守军没有防备,高迎祥、李自成部众连陷多个县,甚至还逼近湖广和四川,所到之处官兵纷纷告急。1634年,崇祯特设山西、陕西、河南、湖广、四川总督,以延绥巡抚陈奇瑜担任五省总督,专门围剿李自成部队。陈奇瑜通过筹划,将高迎祥、李自成等人围困在陕西兴安车箱峡四十余里的狭长缓冲地带内。
当时陈奇瑜的兵力在二万左右,较李自成的七八万人相比还是力量悬殊,加之阴雨连绵一个多月,陈奇瑜打算运用天时、地利条件,不费一兵一箭擒获李自成。而马乏草料、军士死亡过半的李自成部队,多次试图突围都未能成功。无奈之下,李自成采用顾君恩的计谋,暂时投降。高迎祥、李自成等率部投降后,陈奇瑜下令将四万高、李部每万人编为一队,并派安抚官押送遣返归田。然而,这四万人在出南栈道后,杀死了官兵,继而攻宝鸡、麟游等处,关中大震。
陈奇瑜为此被撤职除名,而李自成自此声名大显。其后,崇祯任命洪承畴取代陈奇瑜剿灭各地反抗军。洪承畴率军与镇守陕西的明朝著名将领贺人龙合击,大败李自成等。然而李自成等四处攻击,多省告急。面对着洪承畴的围攻,1635年初,高迎祥、张献忠、老回回、罗汝才、革里眼、左金王、改世王、射塌天、横天王、混十万、过天星、九条龙、顺天王等十三家七十二营起义军在河南荥阳召开荥阳大会。
在会上,李自成提出“分兵定向、四路攻战”的方略,建议由革里眼、左金王抵挡川、湖兵,横天王、混十万抵挡陕西兵,罗汝才、过天星扼守黄河,高迎祥、张献忠以及李自成等攻击东方,老回回、九条龙往来策应。陕西兵精锐,再派射塌天、改世王去抵挡。所攻取的城邑,子女玉帛大家平分。众人都同意了李自成的建议。这表明他具有相当的战略眼光。
会后,各部按计划行动,高迎祥、张献忠、李自成率部攻下大明的发祥之地凤阳。据说,在高迎祥等攻占凤阳三年前,凤阳的老百姓每到晚上就听见皇陵中发出悲号之音,异常凄楚。当时守陵官兵查看时发现,声音竟然是从陵墓中发出,人人惊异,认为是不祥之兆。过了一段时间,当地发生地震,皇陵附近一日震动十三次,而悲号之音在三年中没有一天中断。这大概是在预示皇陵日后的劫难。
占领凤阳后,贪婪、残暴的张献忠放纵手下到处劫掠,不是杀人就是放火,还焚毁朱元璋曾经出家的皇觉寺,甚至要挖明皇室的祖坟。而李自成对此十分不屑,劝张献忠不要贪图些许殉葬之物,而是要图大事,张献忠不听,二人发生争吵。当皇陵被焚烧的消息传到京师后,崇祯穿上素服哀哭,派官员到宗庙告祭,并大规模征兵讨伐。
高迎祥、李自成为避免明军围堵,遂独自率部队离去,没有告知正在吃喝玩乐的张献忠。李自成部队从河南进入陕西,再进入甘肃、宁夏,大败明军,明朝两员著名大将艾万年、曹文诏战死沙场,崇祯听说后,放声大哭。明朝的气运确实是不在了。
1636年春,高迎祥、李自成部队被新任五省总督卢象升击败包围在郧阳山区。同年4月后金建国改清,6月清军第三次入塞。卢象升调任宣大总督抗清。兵部侍郎王家桢继任五省总督,高迎祥、李自成等分别突围。其后高迎祥被新任陕西巡抚孙传庭俘获,崇祯下诏将其凌迟处死。据说高迎祥被俘前,中军大旗被风吹出西城,所驻扎的小县城黑雾弥漫。高迎祥残部投奔李自成,李自成遂被推为“闯王”,继续征战四川、甘肃、陕西一带。
此后,崇祯起用杨嗣昌为兵部尚书。他会兵10万,增饷280万,提出“四正六隅,十面张网”的军事计划,限制义军的流动性,然后各个击破,最后歼灭。李自成在渭南潼关南原遭遇洪承畴、孙传庭的埋伏被击溃,只带着刘宗敏等残部17人躲到陕西东南的商洛山中。同年,张献忠兵败降明。
应该是天不绝李自成。此时,清兵从青口山(今河北迁安市东北)、墙子岭(今北京密云东北)两路毁墙入关,发动第四次入关作战。杨嗣昌为贯彻其“安内方可攘外”的战略,力主与清议和,但遭到宣大总督、勤王兵总指挥卢象升等人的激烈反对。崇祯和战不定之际,卢象升在河北巨鹿对清战争中战死。清兵撤退后,洪承畴改任蓟辽总督前去抗清,孙传庭则被逮捕入狱。这又给了李自成恢复力量的机会,他收集部众,队伍又壮大起来。
1639年,张献忠反叛明政府,李自成则寻机突破包围。后来,杨嗣昌率师来到夷陵,发檄令李自成投降。李自成不从,官军遂将李自成包围在四川巴西、鱼腹山中。这鱼腹山地势十分险要,李自成根本无路可逃。坚持了几日后,眼看缺吃少用,军心动摇,李自成遂召集众将,告知自己将自尽,众人可以拿着他的首级前去投降,这样可以免死。在众将的劝解下,方才罢了。