这时,清军已从四面八方进逼东川,总统川陕军务的陕甘总督宜绵、广州将军明亮、都统德楞泰、提督庆成等,共同领兵汇合于东乡一带。惠龄和侍卫舒亮也从陕西赶来,形成三面夹击之势。义军虽有数万人,但由于地处人烟稀少,地瘠物竭的东川,无法解决补给,而且川楚两部义军在联合问题上存在分歧,把地方利益放在首位。川军处处提防王聪儿和姚之富,怕被谋并。鉴于这种状况,王聪儿等决定由李全、樊人杰、王光祖等部继续留在四川,而主力重返湖北,经万县、云阳、奉节、大宁,沿江而下,各地白莲教徒纷纷响应。王聪儿与姚之富以声东击西之计,佯攻荆州,诈走陕西巧渡汉水,再返陕西,在兴安与从四川全部撤出的李全部会师。半年多的时间,、襄阳白莲教起义军行程数千里,迂回流动,始终保持着运动作战,实力未减反而大增。就连湖广总督勒保也不得不承认:“以言兜剿,即数十路难以圈围;以言堵御,虽数十万兵亦不敷分布。”
鉴于这种形势,明亮、德楞泰建议清政府责成地方政府和豪绅组织乡勇,用堡寨深沟对付流动的义军,断绝其与群众的联系,但这个比较有效的方法却未被采纳。
嘉庆迷信清兵的力量,命清军中最有战斗力的明亮、德楞泰一路专门追剿王聪儿、姚之富义军。同时责成宜绵率清兵对付四川王三槐、徐天德、罗其清等诸部义军;再遣派其他清军对付各地白莲教余部。
1797年(嘉庆二年)底,襄阳各路义军会师于汉中以西,连营二十余里,声势浩大,后折人川北。
裹阳义军与川省起义军配合,利用老林山区的有利条件,甩掉清军,抢渡汉水,奔袭西安,东出河南,进一步发动群众,壮大队伍,逐渐变被动为主动。两路义军兵分三路,由王聪儿、姚之富吸引明亮、德楞泰,另一路高均德部抢渡汉水北上,兵锋直指西安。明亮只好撇下王聪儿,尾追高均德,其实高均德部人少势单,根本无力攻取西安。这时,义军大部主力得以乘虚强渡汉水,两个月后与高均德会师,但德楞泰、明亮紧紧咬住王聪儿,致使义军失去合围西安的时机,在山阳与清军激战几次均告失利。起义军被迫退到湖北郧西的三岔河,进入山沟。这时,郧西县知县孔继擀率乡勇数千人拦住了义军的去路,德楞泰、明亮部亦尾追而至。起义军只好奔向山顶,几次欲冲击而未突破清军防线。清军探知王聪儿、姚之富被困于名为卸花坡的左山梁之上,于是全力攻山,起义军三千余人以滚石火枪奋力抵抗,但由于清军加上乡勇人数数倍于义军,多次抵抗均告失败。王聪儿与姚之富等攀上山顶,誓死不做俘虏,相继跳崖,壮烈牺牲。当时王聪儿年仅22岁。两年多来,她领导数万群众,驰骋疆场,转战万里,与强敌搏战,树立了一位起义女英雄坚贞不屈的光辉形象。
这时,四川起义军中最强大的冉天俦、罗其清、王三槐、徐天德等与湖北义军余部利用地势险峻抗击清军。襄阳义军李全高均德率湖北余部再入四川,起义军实力和声势有所增大。但清军主力亦尾随而至。1798年(嘉庆三年)初,清军与起义军大战于云阳、开县之间,大败清军。六月,清军再败,于是便一边调集兵力,一面以高官显爵诱降东乡王三槐,王三槐中计被擒,解往北京处死,东乡义军失去首领。
同时,川北义军罗其清、冉文俦两支主力于七月被清军围困于营山县的箕山。罗其清与冉文俦不睦,不允许在大神山战败的冉文俦上山。九月,德楞泰引诱义军下山,伏兵而击,罗其清中计战败。德楞泰怕徐天德等北上入陕,舍弃罗其清、冉文俦,分路追击徐天德部义军。罗其清与王廷诏、李全等部退踞大鹏寨。清额勒登保、德楞泰、惠龄、恒瑞四路清军接踵而至,团团围住大鹏山。
大鹏山地势险要,易守难攻,义军在宝珠寺囤积粮食,在山寨周围分立卡隘,并派队伍在营山、仪陇、巴州等地截断清军粮道。这时,徐天德、冉文俦分别攻打大竹、梁山等地以为声援。
十一月,清军发动总攻,昼夜轰击,纵火焚寨。经过近一个月的激战,清兵以南、西两面攻入山寨,罗其清率部退至方家坪被俘,英勇就义。
罗其清部失败后,冉文俦退踞通江,清军集中优势兵力围攻,冉文俦在战斗中被枪击伤,落入清兵之手,因伤重而牺牲。清统治者大肆渲染胜利。但同时也认识到起义军久扑而不灭的主要问题是各路清军“畏贼远避”,“领兵将领懦弱无能,互相推诿”等。于是嘉庆帝于1799年(嘉庆四年)正月初三,乾隆帝死去后不久,为迅速扑灭白莲教起义,在用人、行政、战略等方面都做了重大整顿。其中,最重要的措施就是罢黜权倾朝野的和珅,赐令自尽。并发谕令指出军事上的腐败,指令勒保为经略大臣,节制川、陕、楚、豫、甘五省军务。明亮、额勒登保均以副都统授参赞大臣,分领官军,各挡一路,将惠龄、宜绵解任回京;同时令勒保会同各督抚建立地方团练,并在地方推行“坚壁清野”政策,同时大力推行招抚政策,以图瓦解义军。
与此同时,义军在冷天禄部被清军围攻失败后,各路首领将部队带入开县、东乡之间,决定进入川陕老林地区,不与清军正面冲突,各路义军分别出击迂回。至七月,基本上扭转了被动挨打的局面。嘉庆改派额勒登保为五省经略大臣,进剿义军。
年底,通江蓝号的冉天元部在苍溪大败由额勒登保亲率的清军。第二年,冉天元率义军与清军激战于川西江油县马蹄冈,冉天元设伏,清军被义军团团围住,清统帅德楞泰仅剩十余名亲兵,下马登上山顶,以为必死无疑。恰在此时,援军赶到,冉天元坐骑被射中,被清军擒捕,不幸遇害,胜负咫尺相及,转胜为败。冉天元的牺牲给起义军带来了无可弥补的损失,四川白莲教起义转入低潮。
1801年(嘉庆六年),湖北白莲教首领徐天德在陕西西乡两河口因舟覆不幸溺死。七月,额勒登保、德楞泰会攻三省边界老林山区,起义军屡次失利,被迫退到川边集聚。清军集中优势兵力围追堵截,许多白莲教起义首领和支派被杀、被扑灭,局势的变化越来越有利于清军。起义军虽已陷入困境,但他们仍与强大的敌军作殊死战斗。
自1804年(嘉庆九年),义军已大部分退到川陕楚接境的老林山区,清军亦进入这一地区,对白莲教做最后的镇压。但数县范围的深山老林对起义军与清军来说都是艰苦的。清军日久皆生思乡之念,普遍产生厌战情绪,而义军虽机动灵活,作战英勇,却严重缺粮,战斗又延续了一年多。这期间,姚之富之子姚馨佐、刘学礼、罗思兰等义军首领相继阵亡。九月,义军又一重要首领苟文润被叛徒出卖遇害。最后,白莲教后期主要首领苟朝九等也被俘牺牲。该年九月,清兵宣告凯旋,轰轰烈烈的白莲教大起义被淹没于血泊之中。
历时9年的白莲教大起义(嘉庆元年至嘉庆九年),以农民、小生产者为主体,汹涌澎湃,席卷湖北、四川、陕西、甘肃、河南五省的广大地区,抗击了清王朝十六个省征调的兵力,歼灭清军提督、副将、参将以下四百多人,使清政府的腐朽统治受到了沉重的打击。
当白莲教大起义走向尾声之时,1802年(嘉庆七年),福建同安人蔡牵率船队攻克厦门海口炮台,掀起反清义旗。他与清军周旋于海上,屡次大败清军水师。后蔡牵率船队夺取台湾淡水、凤山,围攻台湾府城,未克。1806年(嘉庆十一年)十一月,蔡牵与清军激战于鹿尔门,败退,又在渔山再败,但起义军势力仍存。清军调集闽、浙、粤水陆兵力合围,蔡牵军连续作战,虽毙敌福建提督李长庚,但元气大伤,加之其部中出现叛徒,清军探知蔡牵行踪,于1809年(嘉庆十四年)将蔡牵围在定海的渔山海面,蔡牵势单力孤,自己举炮裂自己船只,沉于海底,东南沿海渔民反清斗争告一段落。
四年后,在山东、河南、河北等地又爆发了由李文成等人领导的天理教起义。
天理教又名荣华会,是白莲教的一个支派,因天理教徒以八卦作为分股名目,故又名八卦教。
1811年(嘉庆十六年),天理教三省教首李文成、林清、牛亮臣、冯克善等商议起义,约定1813年(嘉庆十八年)十月起义。李文成在外,林清在北京城内发动,一佚李文成率起义军攻至北京即行动,里应外合,直捣禁苑,夺取北京城。
但天理教因人多势众,机密被泄露,李文成、牛亮臣被捕下狱,其部将宋元成遂率众提前起义,聚集五千余人,攻克滑县城,从狱中救出二人。但起义军北上的计划却由于清兵的阻止而未能迅速北上。林清仍按原计划在北京大内外准备等待李文成部。但被发觉,仅10余人冲入宫廷,很快被擒或被杀。林清事泄被捕,惨遭杀害。
攻打皇宫使清统治者提高了警惕,忙派重兵前往山东、河南等地镇压天理教。十一月初清军七路攻克李文成所在大本营滑县屏障道口,得以长驱直入。十一月,清军进攻司寨,战斗激烈,最后李文成等被困于一碉楼,举火自焚,“数十人相抱而死”。清军攻克滑县,牛臣亮等被解送京师,英勇就义,天理教起义被镇压。
与轰轰烈烈的白莲教大起义同时期起义的还有陕西岐山县三才峡木工的武装斗争;赵金龙领导的湖南、广东瑶民起义等,这些起义同样沉重地打击了清王朝腐朽的统治,使清王朝继康雍乾盛世后,逐渐走向衰亡。