元朝末年,河南、山东境内的黄河段多次决口成灾。当时,曾有官员提醒元顺帝说:“黄河决口,万万不能动工。因为如今的老百姓都在叫苦连天,如果再聚集几十万民工在一起,恐怕日后的动乱将要比这黄河的泛滥还要厉害!”但是元顺帝没能听得进去。
1351年春,元朝政府召集汴梁、大名(汴梁是今河南开封,大名是今河北大名)等十三路十五万民工修治黄河,而且限定民工们四月动工,七月就要完工。
限期如此紧迫,治河又是特别繁重的体力活,挑泥、运石、筑坝,哪一样不凭力气?民工们没日没夜地拼命干活,可是朝廷拨下来的那一点点开河经费,却让治河的官吏克扣下去。民工们连饭也吃不饱,肚子饿得咕咕叫,可活儿干得稍慢一点,还要遭到毒打,一时间群情激愤,怨声载道。
当时,深得民众信仰的白莲教首领韩山童、刘福通看到这种情况,就一起商量,决定抓住这个机会,发动群众造反。
他们了解到挖河道一定要经过黄陵冈(今河南兰考东北)这个地方,就一面偷偷地凿了一个一只眼的石头人,在石头人的背上刻了“莫道石人一只眼,此物一出天下反”这十四个字,然后把它预先埋在黄陵冈的地下;一面又派几百个白莲教的会徒去做挑河民工,在工地上传播一首歌谣:“莫道石人一只眼,挑动黄河天下反。”
民工们不懂这歌谣是什么意思,但是听到里面有“天下反”三个字,就觉得好日子快要到来了。开河开到了黄陵冈,有几个民工挖呀挖呀,忽然挖出一座石人来。大家好奇地聚拢来一瞧,只见石人脸上正是一只眼,不禁呆住了。这件新鲜事又很快地在十几万民工中传开来,大家心里都想,民谣说的真的应验了,既然石人出来,天下造反的日子自然来到了。
韩山童、刘福通又借机煽动说:“大数已定,老天让反,佛祖让反,咱们不反更待何时?”百姓纷纷被鼓动起来。
这时刘福通对韩山童说,现在元朝压迫百姓那么厉害,百姓还想念着宋朝。如果打起恢复宋朝的旗帜,拥护的人就会更多。韩山童很赞成这个主张,就跟大家宣布,说韩山童本来不姓韩,而是姓赵,按辈分排起来,还是宋徽宗的第八代孙子;刘福通也是南宋大将刘光世的后代。他们说得那么有鼻子有眼的,百姓们信以为真。
韩山童、刘福通挑选个日子,聚集了一批人,杀了一匹白马、一头黑牛,祭告天地。大家推韩山童做领袖,号称“明王”,并约定日子,在颍州颍上(今安徽阜阳、颍上一带)起义,用红巾裹头作为起义军的标记。
正在歃血立誓的时候,就听外面有人大喊:“不要放走了韩山童!”大家一看,原来是县衙派来的官兵已经把他们包围了。大家一看这情形,只好和官兵拼了。刘福通膂力过人,武艺超群,率领部分弟兄杀开一条血路,终于突出重围。韩山童却不幸被官兵抓去,押到县衙门杀了。
韩山童的妻子带着他儿子韩林儿,逃脱了官府追捕,到武安(今河北武安)躲了起来。
刘福通逃出包围以后,辗转回到家乡颍州,把约定起义的农民召集起来,攻占了颍州等一些据点。原来在黄陵冈开河的民工得到消息,也杀了河官,纷纷投奔刘福通的队伍。因为起义兵士头上裹着红巾,当时的百姓把他们称做红军,历史上把它称做红巾军。不到十天,红巾军已经发展到十多万人。
元王朝听到刘福通声势浩大,吓慌了神,赶忙调动了六千名色目人组成的阿速军和几支汉军,镇压红巾军。阿速军本来是元王朝的一支精锐的队伍,但是那时候已经十分腐败,将领们只知道喝酒享乐,兵士们到处抢劫。
一碰上红巾军,还没交锋,主将带头挥着鞭子,骑马向后逃奔,嘴里还不停地叫喊着:“阿卜(蒙语“走”的意思),阿卜!”下面的兵士一看主将临阵脱逃,也都四散逃窜。
过了一个月,刘福通的红巾军又连续攻下了一批城池。江淮一带的农民早就受到白莲会的影响,听到刘福通起义,纷纷响应,像蕲水的徐寿辉、濠州(蕲水即今湖北浠水,濠州即今安徽凤阳)的郭子兴,都打起红巾军的旗号起义。也有不打红巾军旗号的,像江苏北部的张士诚。
1354年,元顺帝派丞相脱脱集中了诸王和各省人马,动用了西域、西番的兵力,号称百万,围攻占领高邮的张士诚起义军。高邮城被围得水泄不通。起义军正在危急的时候,元王朝突然发生内乱。元顺帝下令撤掉脱脱的官爵。百万元军失去了统帅,不战自乱,全军崩溃。
元军溃散以后,刘福通的北方起义军趁机出击,大破元军。第二年二月,刘福通把韩山童的儿子韩林儿接到亳州(今安徽亳州)正式称帝,国号叫宋。韩林儿被称为小明王。
韩林儿、刘福通在亳州建立政权以后,分兵三路,出师北伐,一口气打到元大都城下。元王朝大为恐慌,纠集力量加紧镇压,红巾军失利。
后来元王朝用高官厚禄招降了张士诚。刘福通保护小明王逃到安丰(今安徽寿县)后,受到张士诚的袭击,1363年,刘福通在战斗中牺牲。北方起义军经过十二年的战斗,终于失败。