1637年,由于明军的猛烈围攻,张献忠当初在湖北谷城接受明朝的招安。其实他并不是真心投降,而是暗暗积蓄兵力,准备东山再起。明朝将领发现张献忠图谋不轨,便准备派兵镇压。
张献忠先发制人,于公元1639年5月,在湖北谷城再一次起义。他先杀掉在谷城的明朝县令,焚毁了官衙,重新打起了起义的旗号。不久,罗汝才也起兵响应。
接着,张献忠又将明朝总兵左良玉率领的进攻部队打得落花流水,左良玉带着余下的几百名残兵败将没命地逃回去了。崇祯皇帝恼羞成怒,气得将主帅熊文灿和总兵左良玉都革了职。崇祯皇帝又派杨嗣昌到湖广围攻张献忠。杨嗣昌率领十万人马,一路雄赳(jiū)赳、气昂昂地来到襄阳。他派左良玉等将领把起义军四面包围起来。张献忠被迫转移到玛瑙(nǎo)山,这时起义军队伍里混进了奸细,情报被杨嗣昌掌握,起义军陷入包围圈中,最后被左良玉军打败,张献忠的妻子、儿子也被明军俘虏。
张献忠带领一千多骑兵突围出来,从湖北转移到四川。杨嗣昌跟踪追击,来到四川重庆,到处张贴告示:有谁能抓住张献忠,赏给黄金万两,并封他为侯爵。谁知第二天,在杨嗣昌的住处,就发现许多标语,上面写道:“有谁能斩杨嗣昌的头,赏白银三钱。”杨嗣昌气急败坏,派出大批官军到处追剿。
而张献忠起义军却行踪不定,忽东忽西,使官军捉摸不透。直到第二年正月,明军才在开县追上起义军。这时的明军将士已被拖得疲惫不堪,起义军却绕到背后,发起猛攻,全线崩溃,将领刘士杰被起义军杀死。
公元1641年,张献忠乘明军襄阳兵力空虚,率精锐部队直取襄阳。杨嗣昌在重庆得知消息后,连夜派使者传令,命襄阳明军严加防守。使者走在途中被起义军发现后抓了回来,并在他身上搜到了盖有杨嗣昌行辕的大印和文书。
张献忠安排他的义子李定国打扮成杨嗣昌的使者,带了几名“随从”和令牌、文书,大模大样地混进了襄阳城。混进襄阳城的兵士趁夜间人们安睡之际,分开在四处放火,惊醒了熟睡的百姓,顿时全城乱作一团,起义军趁机打开城门,大队人马赶到,一举攻克了襄阳城。张献忠一面派人打开监狱,救出被俘的兵士和家属,一面直奔襄王府,活捉了襄王朱翊铭,并下令将朱翊铭斩首示众。
襄阳一战,缴获了明军储存在那儿的大批粮饷兵器,又将襄王府金库里的十几万两银子分发给当地的饥民,老百姓们听说张献忠处死了恶贯满盈的襄王朱翊铭,都载歌载舞,杀鸡饮酒,高兴得像过年一样。
杨嗣昌在重庆得知襄阳的消息后,寝食不安,失魂落魄地从四川又逃窜到湖北。他脚跟还没站稳,又听说李自成起义军趁河南兵力空虚的时候,攻破了洛阳,并将福王朱常洵杀死。杨嗣昌如五雷轰顶,像丧家之犬,感到自己的末日已经来临了,便抽出战刀,刎(wěn)颈自杀,得到了应有的下场。