起义军的力量发展得十分迅速。刘福通起兵后,面对复杂的局势,他采用稳扎稳打的策略。刘福通先击败了察罕帖木儿和李思齐的袭剿。1355年2月,刘福通把在安徽省砀山县避难的韩山童、韩林儿接到了亳州,拥立为皇帝,正式建立政权。因为他们号召要恢复宋朝,所以国号为宋,年号龙凤,韩林儿被尊为“小明王”,即“明王出世”的意思。不久刘福通就杀死了杜遵道,当上了宋政权的丞相,并加封为“太保”,成为了宋政权的实际领导者。
红巾军起义后,得到了广泛的响应。很快起义之火就燃遍了全国。有的团结在宋政权的周围,也有的割据一方,独自称王。在这些起义势力中具有影响的是:张士诚的天佑政权、徐寿辉的天完政权,受红巾军领导的郭子兴势力,其中徐寿辉后来被陈友谅取代,而郭子兴手下朱元璋更开创了明王朝的基业。
宋政权一建立,元政府就调集军队对起义军加紧镇压。但由于自高邮战役后,元政府再无力组织大规模的军事力量,所以主要依靠驻守在各地的地方军事力量对付起义军,收效甚微。从1355年6月,元河南行省平章答失八都鲁统帅诸王藩将兵马开始对刘福通用兵后,尽管表面上互有胜负,但总的看来对元朝十分不利。一方面藩王势力越来越大,而另一方面起义军则越剿越多。
1357年夏天,刘福通在击败元军围剿,稳定住形势后,决定派出三路大军同时北伐,对大都形成包围,试图一举推翻元朝。从战争的部署和实际结果来看,刘福通的这次北伐举动过于轻率。这次北伐各军的协调十分不好。先出发的是由李武、崔德率领的西路军。后来这支军队又改由大刀敖、李喜喜等率领,在陕西,他们被察罕帖木儿打败。李武和崔德因一直没能取得战功,遭到刘福通的斥责。1361年5月,他们竟然向元朝汉将李思齐投降了。
中路军的结局也不比西路强到哪儿去。他们由关先生、破头潘等人率领,越过太行山,进入山西。这支部队犯了孤军深入的错误,他们原计划是从山西配合东路军进攻大都,可由于元军的堵截,竟贸然北上。尽管他们先后攻克了上都、金宁、辽阳,进入今天的朝鲜境内,但一支缺少补给,没有后援,而且攻击的地点都不是元朝致命处的军队,最后战败就是必然的了。最后关先生等人在高丽战死,破头潘退到辽阳时也战败被俘,中路军全军覆没。
在三路北伐军中,唯一能够有效打击元朝统治的是由毛贵率领的东路军。毛贵首先夺得了元朝的海船,从海路奇袭山东,只几个月,就占领了山东大部分地区。但他后来也犯了孤军深入的错误,1358年2月,毛贵继续北伐。先击败了元大将董抟霄兄弟,跟着又连克青、沧两州,3月,攻克蓟州,直逼大都。但很快元军从四面八方赶来支援,毛贵军被击败,退回到了山东济南。
在三路大军北伐的同时,刘福通展开了对宋朝故都汴梁的攻击。1357年6月刘福通首次对汴梁发起攻击,但这一年并没能攻下。1358年,刘福通再次进攻汴梁,元守将竹贞弃城逃跑,刘福通终于攻下了汴梁,迎来韩林儿,将汴梁改为宋政权的都城,大有继承正统的意味。而事实证明,在没有强大的军事力量作后盾的情况下,刘福通的这一举动非常的不明智,他触动了元人非常警觉的神经。三路北伐军相继失败后,元军步步紧缩对汴梁的包围,刘福通也陷入了孤军奋战的境地。最后刘福通冲破元人重围,保护着韩林儿逃到了安丰。就在刘福通被迫逃入安丰的时候,1363年2月,同是起义军的张士诚投降了元人(尽管这种投降只是名义上的,不受元人任何制约)。张士诚为扩大自己的势力,他趁安丰空虚,对刘福通发起了进攻。而刘福通在北伐中已经失去了自己的主要军事力量,在这危急时刻,只好向在名义上仍然是红巾军的朱元璋求援。这一举动的直接结果就是使朱元璋在红巾军中的地位迅速提升。
自脱脱被害后,起义军越闹越凶,在这“山河破碎风飘絮”的时刻,元军当年平定四方的气势哪里去了?元顺帝又在做些什么呢?答案是元朝统治集团内部在这关键时刻正忙着争权夺势,而元顺帝则早就失去了对江山社稷、祖宗基业的责任心,整天依红伴翠,“不爱江山爱美人”,沉迷在淫乐当中。
从1354年到顺帝逃离元大都这十余年时间里,顺帝先后起用右、左丞相竟有十余人之多,一个个不是奸佞小人、无能之辈,就是军阀武夫,结果祸国殃民,反而加速了元朝的灭亡。
元末的这场权力争夺从察罕帖木儿和答失八都鲁开始。答失八都鲁出身蒙古名门,他总领河南军马,但在与红巾军在冀、鲁地区的交战中屡战屡败,于是元政府派察罕帖木儿率军从关陕入河南,帮助答失八都鲁镇压起义军。没想到察罕帖木儿进入冀、鲁地区后却侵占了答失八都鲁的势力,答失八都鲁也因此忧愤而死。答失八都鲁的儿子孛罗帖木儿接替了父亲的职位,开始了与察罕帖木儿间的势力争夺战。这下可好,本来已经内乱频繁了,元朝内部自己人还打了起来。这两股元朝末期的主要军事力量,如果不是有起义军攻入他们的势力范围,根本就不理睬长江以南起义军的扩张,双方打得不亦乐乎,多次由元廷出面,命各还本镇才稍有停歇。
1360年,察罕帖木儿在山东被起义军田丰、张士诚刺杀,他的养子王保保(蒙古名字是扩廓帖木儿)承袭父职,双方的内讧愈演愈烈。1363年6月,孛罗帖木儿乘王保保与山东起义军交战的时候,他派竹贞攻击王保保统辖的陕西。王保保立即派部将李思齐攻击竹贞,竹贞战败投降了王保保。由此可以看出双方这一时期的战斗规模确实不小。
最可悲的是,两个地方军阀之间的交战与宫廷内部的矛盾又结合到了一起。脱脱死后,哈麻当上了中书左丞,他的弟弟雪雪成为御史大夫。元朝的朝政全把持在了这两兄弟手中。人的野心真是无法预测,已经专权的哈麻还想得到更大的权力,他密谋拥立皇太子爱猷识理达腊,想要废掉顺帝。结果被秃鲁帖木儿告发,被顺帝贬去了广州,途中被乱杖打死,结束了他罪恶的一生。哈麻死后,搠思监主政。这搠思监是个大贪官,为了搜刮财物,他甚至下令印造伪钞。国家政府带头制造伪钞,政府腐败程度可见一斑。而顺帝这个时候更加沉迷在“大喜乐”的快感中,还很有“创造精神”地组织起身边的美人,编演了新的“大喜乐”舞蹈——天魔舞,对国家政事简直厌烦透顶。
顺帝的昏庸使皇太子也起了野心。皇太子与自己生母奇皇后(高丽人)谋划篡权。他们让宦官朴不花联系左丞相太平,太平不同意,被皇太子和搠思监逼迫自杀。搠思监与朴不花两人狼狈为奸,使元朝政府达到了前所未有的昏暗局面。朝臣们对两人恨之入骨,纷纷上疏弹劾。这时御史大夫老的沙出场了。老的沙是顺帝的母舅,他看到了朝臣们的不满后,就想要利用这一点排挤政敌。老的沙这一举动无疑是在玩火,搠思监与朴不花是皇太子和奇皇后的亲信。因此在皇太子和奇皇后的唆使下,顺帝将他封为雍王,逐回了高丽。老的沙却不想就这样一走了之,他走到大同后,跑到了孛罗帖木儿军中躲了起来。就这样,孛罗帖木儿和王保保两大军阀间的争夺进一步升级,成为了元朝末年统治上层的两集团间的权力之争。
老的沙留在孛罗帖木儿军中后,搠思监、朴不花与皇太子结成一伙,以王保保为外援,强令孛罗帖木儿交出老的沙。孛罗帖木儿拒绝。于是搠思监、朴不花就诬陷孛罗帖木儿与老的沙图谋不轨,由顺帝下诏,削去了孛罗帖木儿的官职,命令他解兵权后回四川封地。孛罗帖木儿抗旨,于是王保保就得到了朝廷出兵讨伐孛罗帖木儿的命令。就在这个时候,宗王不颜帖木儿也对搠思监、朴不花等人的专横感到了不满,他一面上书替孛罗帖木儿辩解,一边很快出兵与孛罗会师。顺帝看到这种局势,便又降下圣旨,流放了搠思监与朴不花,恢复了孛罗帖木儿的官职。可是尽管顺帝下了诏书,搠思监和朴不花仍然留在大都。拥兵自重的孛罗帖木儿就找到了进兵京师的借口。他率军进攻京师,在居庸关打败了大都的军队,皇太子也被迫逃出了大都。最后在孛罗帖木儿的要求下,顺帝交出了搠思监和朴不花。这两名奸臣被孛罗帖木儿处死。就这样孛罗帖木儿演了一幕元末历史上“清君侧”的闹剧。这之后,孛罗帖木儿被顺帝任命为太保、中书平章政事,兼知枢密院事等官职后,率着军队浩浩荡荡地开出了元大都。
1364年5月,皇太子回宫,他立刻命王保保调动军队,进攻孛罗帖木儿。王保保命白锁驻守京师,命貊高、竹贞、关保分别率军攻击孛罗帖木儿,自己亲驻太原,调督诸军。7月,孛罗帖木儿与秃坚、老的沙再一次以“清君侧”为名进攻京师,皇太子也再一次逃到了太原。孛罗帖木儿这次入京后处死了顺帝身边的一些佞臣,可见他确实没有造反的意思。可是很快,在1365年3月,皇太子与王保保集结了岭北、甘肃、辽阳、陕西各地军队,共同讨伐孛罗帖木儿。这次孛罗帖木儿战败,自此意志消沉,整天与老的沙饮宴,荒淫无度,而且喜怒无常,经常酗酒杀人。孛罗帖木儿的这些举动也使得顺帝十分不满,他密令威顺王宽彻普化子和尚刺杀孛罗帖木儿。和尚雇杀手在这一年的7月29日将孛罗帖木儿刺杀。老的沙带着孛罗帖木儿的家眷逃到了秃坚的军中,随后与秃坚一起投奔了赵王,鼓动赵王起兵。赵王将老的沙和秃坚两人抓了起来,送到了朝廷,这样孛罗帖木儿的势力就被彻底清除了。
孛罗帖木儿的势力被清除后,并不是说元朝各军阀间的混战就此停止了。很快皇太子、王保保与北方汉人军阀李思齐之间的矛盾又成为了新的军阀混战的导火索,而这一次混战一直持续到朱元璋攻进大都后,仍然在继续。
就在元朝各大军阀势力在进行着毫无价值的消耗战的同时,朱元璋逐渐消灭吞并了南方各起义势力。1367年10月,朱元璋消灭了张士诚后,他命徐达北伐。1368年,明军会集在德州,分水陆两路沿运河北上,占长芦,克青州,到达直沽,进逼大都。7月26日夜,元顺帝放弃了防御坚固的元大都,仓皇北逃。同年阴历八月初二,徐达率明军兵不血刃进入大都。元朝在整个中国的统治就此结束。
元顺帝逃到大都后,在1370年4月病死在了应昌,皇太子爱猷识理达腊继位,是为昭宗。逃到漠北的蒙古人虽然仍沿用“大元”的国号,但元朝在中国的统治已经结束,所以历史上称这个流亡政权为“北元”。北元在爱猷识理达腊以后,一直到被明朝大将蓝玉灭亡为止,又存在了相当一段时间。