永乐十八年(1420年)二月初十,一封奏折由直隶沂州卫传到了永乐帝手中:“莒州贼董彦杲等聚众两千余人,以红白旗为号,大行劫杀,莒州千户孙恭等往招抚,杀其从者,势甚猖獗。”这就是唐赛儿起义。
实际上,在沂州卫上奏之前的几个月,唐赛儿的教众已经起义。
唐赛儿的部下董彦杲、刘俊、宾鸿等率众两千余人,占据益都卸石棚寨,以红白旗为号,声势日盛。永乐十七年(1419年),青州卫指挥使高凤带兵围剿卸石棚寨。唐赛儿利用益都山区的有利地形,设下埋伏,诱敌深入,将官兵引进了葫芦谷。在狭隘的山谷中,唐赛儿带领伏兵杀入敌阵,大败官兵,高凤也被杀死。
吃了亏的官府也随后便派莒州千户孙恭前往招抚。起义军他们拒绝了孙恭,并把随同前往的官兵也杀掉。只是这些事情都被地方官一直隐瞒不报,他们采取能镇压就镇压,能招抚就招抚策略,最终却是“三司皆以不蚤发系狱”。
地方上出了这等大事,永乐帝闻奏大惊,山东是漕运要道,是供给京师的基础。永乐帝遂命安远侯柳升为总兵官,都指挥使刘忠为副总兵官,精选5000京师精锐人马赶来镇压。临行之前,永乐帝面授机宜:“贼凭高无水,且乏资粮,当坐困之,勿图近攻。”
唐赛儿组织的起义军,名为“白莲军”,聚众数千人。由于蒲台县地处平原,无高山密林之险,唐赛儿在青州时发现,在蒲台县城以南二百多里的益都县境内(现在杨集、朱崖两乡镇的交界处),有一个古代的卸石棚寨,峰高七八百米,四面是绝壁,易守难攻,又处于诸城、安丘、莒州、寿光等地的中心,于是唐赛儿便选中卸石棚寨作为起义的地点,永乐十八年(1420年)二月十一日正式起义。
唐赛儿起义后,明政府急令青州卫都指挥使高凤包围卸石棚寨,企图消灭起义军。明军一到卸石棚寨立足末稳,唐赛儿夜间便突然发动袭击,将高凤等人当场击毙,并把处于混乱状态的明军全部歼灭。
初战告捷,唐赛儿起义军声威大振。她以卸石棚寨为根据地,不久又占领了莒州、即墨等县城,打击官府和豪富地主。青州以东的各地民众纷纷响应起义,“毁官衙,烧仓库”,开仓济贫,队伍迅速发展至2万多人,震动了京师。青州以东各地的群众纷纷响应,益都、诸城、安丘、莒州、胶州等州县先后出现了十几支义军。其中规模较大的有宾鸿、董彦杲的两支队伍。这样以卸石棚寨为中心的农民起义便轰轰烈烈地开展了起来。
唐赛儿在初战取胜后,以卸石棚寨为根据地,不断打击附近州府的官府污吏和恶霸、地主。唐赛儿所到之处,各官吏纷纷逃命,其他各路起义军也纷纷响应。据地方志记载,寿光、安丘、胶州等地都有“毁官衙、烧仓库”等打击明军的活动,一份份告急文书飞一样传到京师。为了控制局面,永乐帝便派出了一名大臣前往卸石棚寨进行招安,唐赛儿怒斩了来使。
在招安不成的情况下,永乐帝派“京营”的提督总兵官、安远侯柳升和都指挥使刘忠率五千精兵前往镇压。
面对唐赛儿领导的起义军,柳升认为“小小贼寇,不日即可平定”。二月二十八日,柳升、刘忠兵至益都后,再次包围了卸石棚寨。
唐赛儿利用敌军骄横轻敌的弱点,以“寨中食尽,并且无水”为由诈降,将柳升主力调往警戒城东有水的地方,自己却集中兵力,向防御薄弱的敌营发起突袭。夜二更时,攻破敌营,杀死都指挥使刘忠。当敌主力赶到时,唐赛儿已指挥起义军从容转移。
同时,其他起义军也与明军展开了搏斗,其中以安丘城的战斗最为激烈。当时,安丘、莒州、即墨三地起义军一万余人围攻安丘城,眼看就要攻下时,在山东沿海负责防备倭寇的都指挥卫青率兵赶到,使起义军腹背受敌,最后失败。地方首领赵琬被俘就义,义军死伤两千多人,被俘者四千余人,皆被明军所杀,妻小被官府没收为奴。至此不到一个月的时间,唐赛儿起义便被镇压下去。