元末农民起义,起于元至正十一年(1351年)5月刘福通起义,迄于元至正28年(1368年)正月朱元璋称帝,前后历时17年零8个月。蒙古贵族统一中国后建立的元朝,已历时60余年。元朝统治集团在残酷压迫汉族人民和一味横征暴敛的同时,其内部政局却始终不稳。至元惠宗时代,政治更加黑暗,经济更加调敝,终于导致全国性的动乱。
元至正四年(1344年)以后,黄河三次决口,殃及冀、鲁、豫广大地区,人民流离失所,饿殍遍野。元至正十一年(1351年)四月,元惠宗派工部尚书贾鲁为总治河防使,征发沛梁(今河南开封)、大名(今河北省大名县)等13路民夫共15万人,前去凿治黄河。这年5月,颖州(今安徽省阜阳县)人韩山童、刘福通等聚集永年(今河北省永年县),利用凿河征夫所激起的不满情绪,在民夫中鼓动造反。民夫们立即响应,共推韩山童为明王,打出“复宋”的旗号,声称要“直抵幽燕之地”、“重开大宋之天”。正当起义尚在准备之际,当地元军闻讯赶至,韩山童被捕,惨遭杀害。刘福通率余众逃回颖州,以红中裹头,成立了历史上有名的红中军。
各地农民起义迅速发展,使得元朝统治集团惊慌失措。刘福通起义4个月后,元惠宗曾命也先贴木儿率领10余万大军赴河南镇压,结果被刘福通击溃。与此同时,徐寿辉、张士诚、方国珍、明玉珍、郭子兴等部农民起义军,亦分别在各地重创元军。元至正十四年(1354年)正月,张士诚在高邮(今江苏高邮县)自称诚王,建国号为大周。元惠宗深感震恐,命丞相脱脱亲率40万大军前去镇压。然而,元军围攻高邮40余天,损失兵力大半,亦未能破城。高邮之战,是元末农民起义的一个转折点,元朝从此丧失了对起义军的军事优势。
元至正十五年(1355年2月),刘福通迎立流亡在肠山(今江苏省沛县)的韩山童的儿子韩林儿为帝,建国号为宋,改元龙凤,定都亳州。然后,刘福通率军又攻占邓(今河南省邓县)、许(今河南省许昌市)、嵩(今河南省嵩县)、洛(今河南省洛阳市)四州及黄河以北的罩怀(今河甫省沁阳县),使自己的兵力扩大到30余万人。
元至正十七年(1357年)六月,刘福通决心直捣元朝统治集团的腹地,兵分三路北伐。在西、东、中三路相继北伐的同时,刘福通也率本部军出没于黄河南北,连克曹(今山东省曹县)、濮(今河南省濮阳县)、大名(今河北省大名县)、卫辉(今河南省辉县、延津县)等地,并于元至正十八年(1358年)五月攻克汴梁(今河南省开封市),迎接韩林儿迁都于此。元至正十九年(1359年),汴梁为元将察罕坎破,刘福通掩护韩林儿退往安丰(今安徽省寿县)。元至正廿三年(1363年),已经投降元朝的张士诚派部将吕珍攻破安丰,刘福通遇害,韩林儿投奔朱元璋部。
刘福通所领导的红中军起义,前后历时13年,横扫中国北部广大地区,歼灭元朝大批有生力量,为后来朱元璋推翻元朝打下了坚实基础。但是,由于刘福通被一时的军事胜利冲昏头脑,过早地发动战略进攻,作战中又缺乏集中统一的指挥,各路大军互不协同,终于被元军各个击破。就在北方的农民起义又转入低潮之际,朱元璋率领的红中军继承刘福通未竟之业,正在得到迅速发展。
朱元璋是壕州钟离(今安徽省凤阳县东)人,元至正十二年(1352年)投入红中军郭子兴路,因作战勇敢升为镇抚。元至正十三年(1353年)冬天,朱元璋因不满郭子兴与赵均用合兵后互相争权,又觉得不应长期固守濠州,便在征得郭子兴的同意后,带领徐达、汤和等部将南下滁州(今安徽省滁县),另求发展。
次年二月,朱元璋命常遇春以奇兵反攻采石矶,自率主力继后,大破曼济哈雅所率的舟师,重新打通与和州的联系。三月,朱元璋命全军水陆并进,再次进攻集庆路。起义军在江宁镇(今江苏省江宁县)歼灭元军3万余人,又大败元军于蒋山(今南京市东北钟山),终于攻入城内。朱元璋改集庆路为应天府,命徐达为大将军,东取镇江、金坛、丹阳、常州(今江苏省武进县)、江阴、常熟等地。六月,朱元璋又命邓愈率邵成、华云龙等进攻广德路(今安徽省广德县、郎溪县),一举将其夺占,七月,朱元璋在部将的拥戴下,在应天自称吴国公,韩林儿在亳州闻讯,亦遣使至应天,封朱元璋为平章政事兼右丞相。
朱元璋占据应天府后,北面有元军与其对峙,东面、西面、南面和东南面有张士诚、徐寿辉、陈友宝、方国珍等与其为敌,可谓处于四面包围之中。朱元璋决心在消灭元军的同时,对农民起义军中四分五裂的局面加以收拾,遂于元至正十七年(1357年)七月先从元军手中夺取宁国(今安徽省宁国县)、宣州(今安徽省宣城县)、绩溪(今安徽省绩溪县)、徽州(今安徽省歙县),留兵守之,以防张士诚与徐寿辉东西合势。
朱元璋平定江淮诸地后,遂对张士诚展开全面反攻。元至正廿六年(1366年)八月,徐达等率大军20万人至太湖,一举击溃张士诚派驻湖上的兵力,然后进至湖州三里桥(今浙江省吴兴县东)。张士诚军分三路来拒,徐达亦分兵三路进击,击溃张士诚军,张士诚见情势危急,亲自率军来援,亦被徐达等击败于卓林(今浙江省桐乡县北)。九月中旬,朱元璋命李文忠自严州(今浙江省建德县)攻杭州,华云龙自太湖攻嘉兴,以策应湖州方面的作战。
十一月中旬,朱元璋军在大量歼灭张士诚军之后,连克吴兴、桐庐、富阳等地,包围杭州,迫使张士诚部将潘原明出降。
十一月下旬,徐达等奉命经南得(今江苏省吴县东)、吴江(今江苏省吴江县)趋平江(今江苏省吴县),直捣张士诚的巢穴。但由于平江城坚,张士诚死守,徐达等围城两月,并攻克附近的松江府及嘉定、太仓、昆山、崇明等地,平江仍未攻下。元至正廿七年(1367年)二月,朱元璋致书张士诚,劝其投降。张士诚未作回答。六月初,张士诚欲出城决战,见徐达军势严整,未敢妄动。几天后,张士诚命徐义、潘原绍等潜出西门突围,自率一部军后继,被常遇春等击回。徐达为尽快消灭张士诚,以新制襄阳飞炮昼夜轰击平江。九月,徐达终于率军破城而入,张士诚部将纷纷投降,张士诚本人自杀未遂,被徐达派人送往应天。朱元璋本想为张留条后路,无奈张士诚拒绝投降,自缢而死。
朱元璋消灭张士诚后,于十月即命令徐达北伐中原,以求彻底推翻元朝。与此同时,朱元璋派兵逼降割据浙东南的方国珍,平定福建和两广,彻底扫平元末农民起义以来的各支武装。元至正廿八年(1368年)正月,朱元璋即皇帝位于应天,改国号为明,建元洪武,是为明太祖。至于那位也曾作为皇帝的韩林儿,早在两年前被朱元璋害死。
从北宋以来,长期积累的土地兼并和土地集中问题,经过这次大起义之后,才算获得了一次较大幅度的调整和缓和。明初土地关系之所以能获得一定程度的缓和,正是元末农民战争之赐。大批奴隶得到了解放。奴隶在斗争中获得解放的事实,具有普遍意义。