陕北起义震惊了明朝统治者,崇祯皇帝准备利用剿抚兼施的方针尽快平息农民起义,三边总督杨鹤执行以抚为主,以剿为辅的政策,企图瓦解农民起义军。在明军剿抚兼施的进攻下,陕西战场的义军或被镇压,或接受了朝廷的招安,呈现出时降时叛的复杂局面。为避开明军主力,王嘉胤率军入晋,起义中心转移到山西。王嘉胤牺牲后,王自用联合高迎祥、张献忠、罗汝才各部,号称36营,在山西继续战斗,农民起义军由分散状态进入协同作战阶段。义军势力壮大,宣告了明朝招抚政策破产,主抚派杨鹤下台,洪承畴继任三边总督,集中力量围剿起义军。王自用在崇祯六年(1633年)作战牺牲,起义军在高迎祥领导下与明军展开了激烈搏斗,损失较大。为保存实力,起义军从山西转入河南。崇祯六年(1633年)冬,高迎祥、张献忠、罗汝才、李自成等经渑池县突破黄河防线,转移到明军力量薄弱的豫西,展开了新的战斗。渑池突围的胜利,改变了此前起义军被动受剿的局面,变被动为主动,各路农民军的声势自此之后,日渐浩大,明朝官军疲于奔命,朝廷逐渐丧失了控制局势的能力。
起义军于渑池突围后,在豫楚川陕交界山区流动作战,与明军周旋,明军不得不分兵把守要隘,穷于追剿,陷入战线过长,兵力分散的困境。明将洪承畴为改变被动局面,以重兵包围起义中心地区,实施重点进攻,高迎祥义军接连败于确山、朱仙镇(今河南开封市西南)等地,连连受挫,被迫转入西部山区。崇祯九年(1636年)夏,高迎祥起义军被围困在丛山之中长达3个月。高迎祥率部从陕西汉中突围,遭到陕西巡抚孙传庭伏击,被俘牺牲。
高迎祥牺牲后,起义军逐渐形成为两支劲旅,一支由张献忠领导,活动在湖北、安徽、河南一带;另一支由李自成领导,活动在甘肃、宁夏、陕西一带。崇祯十一年(1638年),在洪承畴优势兵力围攻下,起义军蒙受了很大损失。李自成兵败梓潼,退守岷州(今甘肃岷县)、临洮。张献忠败于南阳、麻城,最后投降了明军,起义转入低潮。为保存起义军力量,李自成率部进入河南,于崇祯十四年(1641年)一月攻占洛阳,杀死了福王朱常洵。张献忠经过一年休整,于崇祯十二年(1639年)五月再次起兵,在罗猴山(今湖北竹山县东南)歼灭明军主力左良玉部,后转入四川,在达州战役中大获全胜,随即兵进湖北,于崇祯十四年(1641年)二月攻陷襄阳,杀死了襄王。李自成、张献忠相继攻占洛阳、襄阳,宣告了明朝围剿政策的破产。
张献忠、李自成两支大军相互应援,分别在川陕和河南战场与明军作战。张献忠于崇祯十六年(1643年)五月攻下武昌,把楚王投入江中。张献忠在武昌称大西王,初步建立了政权。次年,张献忠带兵入川,八月攻陷成都,在成都称帝,改元大顺,建立大西政权。李自成从洛阳转入湖广作战,于崇祯十五年(1642年)攻下襄阳,称新顺王,初步建立了政权机构。此后连克承天府(今湖北钟祥