韩林儿和刘福通在至正十五年(1355年)在亳州建立了宋政权以后,当时分散在中原各地的红巾军,大部分都接受他的领导,因为这些首领大多是韩山童传教时的“门弟子”。当时在滁阳地区的郭子兴的红巾军,也接受龙凤政权的领导。于是刘福通就积极向元朝统治地区进军。这个时候元朝政府除了原有的几支主要部队以外,又增添了几股地主反动武装,尤其是察罕帖木儿成为地主武装中最凶悍的一支。
察罕帖木儿的曾祖父阔阔台投靠蒙古贵族当军官,在元朝初年随元军来到河南。后来,他的祖父和父亲就在河南定居下来,于是就成为安徽林泉县人。察罕家庭汉化比较深,察罕从小就喜好汉学,曾经参加进士考试。他看到红巾军不断攻占江淮郡县,而朝廷征兵进行征讨,但是没有成功,于是怀着地主阶级对农民军的仇恨心理,至正十二年(1352年)在他的家乡组织了一支地主武装。他与沈丘罗山典史李思齐合兵,袭破罗山。于是元朝政府就授予察罕为汝宁府达鲁花赤,李思齐为知府,各地流亡的地主都纷纷来到这,在沈丘成一军。这一支地主武装和元朝其他的几支部队,成了龙凤政权的死敌,对中原地区的红巾军起了极大的破坏作用。
到了至正十五年(1355年)六月,刘福通率领大军打败河南行省平章答失八都鲁的部队,迫使答失八都鲁收兵,驻扎在中牟。九月,起义军跟踪到中牟,又给答失八都鲁以狠狠的打击,后来答失八都鲁与他的父亲失散。这一年,农民起义军连续攻下了开封以南的许多郡县。察罕帖木儿扼守虎牢,防止起义军过河。十二月,元朝政府又征兵,加强了答失八都鲁的军事力量,而刘福通在两次获胜的骄傲情绪之下,放松了警惕,结果败给了答失八都鲁,被迫撤出了亳州,退到了安丰。在安丰,农民起义军整顿了队伍,但是没有多长时间,官兵又开始猖獗起来,起义军被逼分道进行活动。李武、崔德所率领的起义军,一路上风驰电掣,到至正十六年(1356年)九月攻破了军事重镇潼关,杀了参知政事述律杰。至正十七年(1357年),刘福通派遣毛贵率领一支农民起义军向山东进军。毛贵进军神速,二月攻下了胶州,三月攻下了莱州、益都和滨州。
至正十七年六月,刘福通亲自率大军进攻汴梁,就是现在的河南开封,并分军三路进行北伐:中路由关先生、破头潘、冯长舅、沙刘二以及王士诚等率领攻向山西、河北;西路由白不信、大刀敖和李喜喜率领攻向关中;东路由毛贵向北进攻,直指大都。他们在军旗上写着豪言壮语,表示了农民起义军气壮山河、势必推翻元朝统治者的决心。
关先生等人所率领的中路军,是为了配合毛贵的东路军攻取大都的。至正十七年(1357年)九月,中路军越过太行山,攻克了山西的陵川。九月,占领了山西长治,然后进攻重镇山西太原。因为察罕帖木儿在这一带驻有重兵,红巾军又退入太行山。至正十八年(1358年)二月,毛贵派遣部将王士诚继续从益都出兵,进攻怀庆路,杀了这个路的总管王得贞。六月,王士诚又攻占了现在的山西临汾。十月,关先生从定州向西,占领大同,又向北进攻兴和等路。十二月,关先生、破头潘攻克了元朝的上都,焚毁了皇宫,烧了鲁王府。又夺取了辽阳行省所在地的辽阳路,大败元朝左丞相太平的儿子也先忽都。后来,中路军进军高丽,就是现在的朝鲜,在高丽大约三年的时间,到至正二十二年(1362年)初,红巾军被亲向元朝的高丽军大败,关先生战死,剩下的人在破头潘的领导下退守到辽阳。四月,破头潘在辽阳被俘。另外,在至正二十年(1360年),由汤通、周成率领的一支中路军曾经攻下大宁路,后来也被元朝的将领很快打败,汤通、周成牺牲。到至正二十二年(1362年)四月,北伐的中路军完全失败了。
进攻陕西的西路军最初是由李武、崔德领导的。他们攻克平陆、安邑之后,察罕帖木儿很快追来,红巾军战败,队伍溃散。至正十七年(1357年),李武、崔德又重新组织一支红巾军,突然从襄樊出兵占领了商州,进攻武关。二月,又夺取了七盘,进据陕西的蓝田,逼近陕西行省首府奉元路。同时分兵攻克了陕西的许多州。元朝政府不得不令察罕帖木儿、李思齐从陕州、潼关进攻陕西红巾军。由于这些元军已经赶到,李武、崔德只好放弃进攻奉元路的计划。六月,刘福通派白不信、大刀敖、李喜喜增援李武、崔德。他们进入陕西后,夺取兴元路,占领了秦陇地区,进攻甘肃的陇西。十月,西路军进攻陕西的凤翔,察罕帖木儿率军队进行救援,红巾军失利。至正十八年(1358年)四月,一部分西路军在李喜喜率领下进入四川,叫做“青巾”。后来青巾被徐寿辉部将明玉珍赶走,李喜喜只好率领部下到达武昌,投奔陈友谅。留在陕西、甘肃、宁夏一带的李武、崔德,曾经在至正十九年(1359年)四月攻占宁夏路(宁夏银川)、灵州(今宁夏灵武南)等地。至正二十一年(1361年)五月,李武、崔德被李思齐打败。因此,北伐的西路军到此就完全失败了。
毛贵所率领的东路军是北伐的主力,是为了攻取大都的。他们占领山东的胶州、莱州、般阳、益都、滨州等地之后,元朝统治集团惊恐万分,马上命令湖广行省左丞相泰不花、知枢密院事等人出兵堵截毛贵。至正十七年(1357年)七月,镇守黄河的元朝义兵万户田丰,也来响应毛贵的起义,攻占济宁路,不久被另一元朝义兵万户孟本周夺取,田丰被迫转战到山东济宁、临城一带,后来又夺回了济宁路。当年冬天,在山东惠民的元朝义兵千户余宝也杀死知枢密院事,宣布起义。当时,元朝派到山东镇压农民起义的元军总指挥太尉,一直躲藏在山东的聊城,不敢去出战。至正十八年(1358年)正月,田丰攻陷南北漕运的枢纽东平路,元朝的漕运从此中断了。同时,毛贵在益都的好石桥击败了敌人,在二月初攻下了济南。到现在,毛贵、田丰占领了山东的大部分地方。刘福通在山东益都等处设立行中书省,任命毛贵做平章。毛贵设立了“宾兴院”,选用以前的元朝官吏姬宗周等人为地方政权的官吏,并且还颁发铜制的印章,给予各级官吏行使权力,维护地方秩序。同时,毛贵在莱州组织了三百六十处屯田,每个屯相隔三十里;又制造了大车数百辆,运粮食进行储备。不论是官田、民田,一律收税二成,赋税标准是最低的。由于毛贵十分重视生产,因此山东的局势一直很稳定,成为北伐的基地。这样,毛贵就在至正十八年(1358年)二月,开始挥师北伐,进入河北,准备攻占大都。首先,毛贵击败并杀死了元朝河南行省右丞。接着,又攻下河北的清、沧二州,占领长芦。三月,攻陷河北的蓟州,到达北京通县西南,元朝的枢密副使达国珍战死,毛贵直逼京城大都。以顺帝为首的元朝统治集团惊慌不安,乱作一团,有的主张北逃,有的主张迁都西安,甚至有的准备派人去高丽修宫殿,不知道怎么办才好。但是毛贵只是孤军深入,其他各支红巾军没有配合。元朝召集四方军队来援,毛贵在柳林被打败,不得不退到济南。而且在这个关键的时刻,东路军内部发生了内讧。至正十九年(1359年)四月,从淮安到山东投奔毛贵的赵均用,卑鄙地杀害了毛贵。七月,毛贵部将从辽阳回到益都,杀死赵均用。东路军由于自相残杀,从此一蹶不振。田丰在毛贵北伐的同时,也取得了重大的胜利,先后攻下了东平、济宁、东庆路、晋宁路,后来又折回山东。这时山东虽然大部分都被红巾军占领,可是由于毛贵被杀,群龙无首,互相攻打。其中,田丰、王士诚两派势力较大,田丰自称为花马王,王士诚自称扫地王。至正二十一年(1361年)六月,察罕帖木儿开始向东路军进攻,先后占领了山东的冠州、东昌。八月,察罕帖木儿派他的养子、部将造浮桥渡河,田丰带两万人夺桥没有成功,长清陷落。元军进攻东平,田丰部将也战败,东平被围。田丰投降,元朝任命他为山东行省平章。察罕帖木儿令田丰为前锋,先后招降了余宝、王士诚、杨诚,然后围攻济南,同时向南攻打泰安、北打济阳、章丘,向东攻打沿海州县。由于叛徒刘簋的出卖,至正二十一年(1361年)八月,济南落入元军手中。察罕帖木儿因为镇压红巾军有功,被升为中书省平章政事(副宰相)、河南知事、山东行省枢密院事。十月,察罕帖木儿进攻益都,毛贵的部将坚守。同年六月,田丰、王士诚刺死了罪大恶极的察罕帖木儿,重新回到了红巾军的队伍,进入了益州城。扩廊帖木儿继续围攻益都。十一月,益都也陷落了,田丰、王士诚不幸被杀,接着,莒州也被攻下,所以说,北伐的东路军到1362年年底也完全失败了。
到至正二十二年(1362年)年底,东、西、中三路北伐军虽然先后失败,但是他们在北伐的过程中,牵制、消灭了大量元军和汉族地主武装,动摇了元朝在北方的统治基础,刘福通率领的中央红巾军,乘机向外出击。至正十七年(1357年)六月,刘福通进攻汴梁,但是没有打下来。八月,刘福通占领大名路、卫辉路。于是河南北部、河北南部广大地区被刘福通占有,形成了对汴梁的包围圈。当时,驻守在太行山以东的是元朝河南行省平章答失八都鲁。他曾经多次败在红巾军的手下,深深知道红巾军的厉害,不得不向朝廷求援。元顺帝增派知枢密院事答里麻失里来支援,结果元军还是大败,答里麻失里战死,答失八都鲁退到石村。由于屡战屡败,答失八都鲁又气又愁,抑郁而死,他的儿子退守到河北。第二年五月,刘福通再次发动对汴梁的进攻,元朝守将竹贞节逃跑,红巾军打下了汴梁。刘福通把汴梁定为宋政权的都城。汴梁是原来北宋的都城,北方红巾军是用“复宋”作为号召的,因而攻占汴梁是北方红巾军多年的愿望,对于推翻元朝统治者具有很大的号召力。这时,北方红巾军出现了鼎盛的局面。但是,由于三路北伐军的逐渐失败,形势逐渐恶化。元军对宋政权的围剿也不断地加剧,察罕帖木儿和孛罗帖木儿带领的两支最凶狠的反动军队,对刘福通起义军的包围圈在一步步地紧缩。至正十八年(1358年)七月,察罕帖木儿把军队移到了洛阳,加紧了对于汴梁的包围。孛罗帖木儿拼命地进攻曹州,企图切断汴梁和山东红巾军的联系。十一月,曹州陷落,起义军首领英勇牺牲。第二年年初,孛罗帖木儿又北上山西的代州,内蒙古的丰州、云内,驻守大同,切断了汴梁和中路北伐军的联系。这时,宋政权的处境非常危急。察罕帖木儿移军虎牢,分兵两路。南路攻打归、亳、陈、察,北路在黄河边布置了战船,派兵守住黄陵渡;五月,又派陕西、山西各路元军,把汴梁围得水泄不通。因为红巾军主力分三路远征,中原红巾军力量比较薄弱,所以刘福通开始时采取坚守不战的正确战略。但是后来由于元军以苗军做诱饵,红巾军出战,中了埋伏,被打得打败。八月,汴梁城被攻破,刘福通保护韩林儿冲出重围,逃奔安丰。汴梁城里数万红巾军战士和宋政权官吏、家属都被俘虏了。到了至正二十二年(1362年)二月,三路北伐的红巾军都已经失败,安丰孤立无援,城内空虚,曾经投降的张士诚趁火打劫,派大将吕珍进攻安丰。安丰城中粮食已经断绝,军民都已经饥饿不堪,甚至连尸体也挖出来充饥。就这样,红巾军仍然坚守。韩林儿向朱元璋求救,朱元璋亲自率大军赶来救援,可惜已经迟了,刘福通奋力战斗,光荣牺牲。刘福通没有死在元军和汉族地主武装手里,却死在原来也是起义者的张士诚的手下,不能不说是一个大悲剧。朱元璋来救援,救出了韩林儿。后来,韩林儿被安置在滁州。至正二十六年(1366年)十二月,朱元璋假意命令部将廖永忠迎接韩林儿到应天(江苏南京),在路上的时候,把小明王沉死在长江之中。
由于韩林儿只有空名,实权掌握在刘福通的手中,而至正十七年(1357年)六月以后,刘福通的号令越来越行不通,将领各自谋取自己的利益,甚至互相残杀、自我削弱,同时绝大多数起义军占领一个地方后,不知道建设巩固的根据地,往往得到了又失去,所以刘福通领导的北方红巾军最后被汉族地主武装镇压下去了。但是,它坚持了十三年,经过大小数百战,是元末农民大起义的主力和中坚,在推翻元朝统治中,出力最多,贡献最大。北方红巾军和它的领袖刘福通、毛贵等人的名字和光辉业绩,极大地鼓舞了全国的反元斗争,对于推翻元朝统治作出了重大的贡献。