至正十六年,刘福通相继派出三路北伐军,吸引了元王朝大量兵力。一直与刘福通作对的察罕帖木儿、李思齐等主力部队都被调离河南。
刘福通趁机出击,于至正十七年六月,进攻河南重镇汴梁,然而因城池坚固,未能攻克。八月,刘福通攻克大名路(今河北大名)、卫辉路(今河南汲县),再次击败元将河南行省平章答失八都鲁,势力推进到河北南部,隐然开始威胁到元大都。元朝调派知枢密院事答里麻失里率军前往堵截,与红巾军在濮州展开会战,元军战败,答里麻失里战死。屡败屡战的答失八都鲁虽苦苦支撑局面,但朝廷疑心他有“玩寇失机”之嫌,累诏催他进军决战。红巾军趁机施行反间计,伪造了一份答失八都鲁与己方的停战协议,还故意扔在朝廷使者必经之道上。大都方面得到这封暧昧的停战协议后,更加不信任答失八都鲁。在河南战场上苦拼的答失八都鲁得知消息后,竟以忧愤一夕而卒。其军队由儿子孛罗帖木儿接掌,这支主力一时军心动荡,无力出战。
刘福通遂于至正十八年的五月,再次进攻汴梁城。元守将失烈门自知不敌,弃城逃遁,汴梁落入红巾军之手。汴梁即北宋都城东京,也就是今河南开封,刘福通既以“复宋”为号召,遂定汴梁为都城,将小明王自亳州迎来,大兴土木,营造宫阙。然而好景不长,随着西路军的失利,东路军的退守山东与中路军的远征塞外和朝鲜,元军得以腾出手来对付刘福通。
至正十八年十月,孛罗帖木儿攻占曹州,杀红巾军武宰相、仇知院。次年五月,察罕帖木儿相继攻占虎牢关及归、亳、陈、蔡等州,对汴梁城形成了大包围势态。秦、晋等地的元军也纷纷出函关虎牢,逾太行黄河,汇集中原。察罕帖木儿指挥大军,南路出汴南,略曹南,据黄陵渡,北路出汴梁之东,沿黄河水陆并进。各路元军齐集汴梁城下,首先攻取汴梁外城。八月,汴梁粮尽,察罕帖木儿发动总攻,刘福通苦战不利,只得率数百骑兵护着韩林儿突出东门,逃往安丰。元军攻破汴梁,俘获红巾军数万人及大批龙凤政权官员的家属。
正当河南打得不可开交之际,山东的毛贵又出了事故。至正十九年四月,他的老上司赵君用,在淮安打了败仗,逃到山东来投奔他。这位赵社长,向来以惹是生非著称,在濠州就欺负过郭子兴、朱元璋了,这回到了山东也不收敛,竟自不量力地谋杀了毛贵。正在远征辽阳的毛贵部将续继祖得知消息后,极其愤怒,于七月间回师山东杀掉了赵君用,双方大打出手,乱得一塌糊涂,自然也无暇支援中原的刘福通军。
察罕帖木儿击败刘福通的红巾军主力之后,于至正二十一年六月进攻山东红巾军,克冠州、东昌。八月,察罕帖木儿遣扩廓帖木儿、阎思孝、关保、虎林赤等率精锐五万自东阿南黄河上架浮桥,渡河攻东平。红巾军将领田丰率部二万人夺桥不成,元军渡过黄河,攻占长清,包围东平,察罕帖木儿致书田丰劝降,田丰见形势不利,投降了。元朝授田丰山东行省平章,以他为先锋,招降了红巾军棣州守将余宝、东平守将王士诚、东昌守将杨诚及沿海登、莱、沂、密等州。元军连下太安、济阳、章邱,包围济南,济南红巾军苦撑了三个月,终于城陷。山东仅剩下益都、莒州两座城市,尚为红巾军所据守。
一时间,察罕帖木儿军声势大振,连雄踞西吴的朱元璋都派人来通好。然而朱元璋毕竟是那个时代难得的人杰,他虽然伪向察罕示好以求稳定北方战线,但却敏锐地对左右地指出察罕的致命问题:“察罕虽假义师,图恢复,乃与博啰(即孛罗帖木儿之异读)兵争不解,屡格君命,此岂乃忠臣之为乎?又闻其好名,如田丰为人倾侧,察罕待之如心腹,则暗于知人也。”
朱元璋的判断相当准确。世事就是那样变幻莫测,就在察罕帖木儿意气风发之时,准拟一鼓作气荡平山东红巾军时,他本人却于至正二十二年六月被田丰、王士诚刺杀。田丰降后,察罕对他推心置腹,常独入其帐中,手下人屡劝不止,他反称:“吾推心待人,安得人人而防之!”此次,田丰假借行观营垒之名,将察罕骗入营中,由王士诚实施刺杀。这颗元末最著名的将星,就这样陨落了。设使察罕不死,天下事尚未可知。元顺帝对此痛惜不已,追封他为河南行省左丞相,忠襄王,谥献武。当时英雄,无论敌友,尽皆扼腕,连远在江东的朱元璋闻讯后,都不禁长叹道:“天下无人矣!”没有英雄的龙战,是多么的乏味啊!
田丰、王士诚刺杀察罕后,逃入益都城中据守。察罕部众推扩廓帖木儿为主将,继续围攻益都。十一月,扩阔帖木儿穴地道而入,攻破城池,生擒田丰、王士诚二人,将其剖心处死以祭察罕帖木儿。
由于察罕帖木儿进攻山东,随即又被刺身亡,安丰的刘福通和韩林儿总算安生了一段。但中原毕竟是四战之地,虽然元军无暇顾及,但江东的私盐贩子张士诚却盯上了刘福通和他的安丰城。
张士诚小字九四,出身为泰州私盐贩子,私盐贩子有两个造反的优势:第一是有钱;第二是有一支有组织的武装力量。至正十三年正月,张士诚带着他的几个兄弟和李伯升等十八壮士起事,迅速扩展到上万人,数月内攻占了泰州、兴化、高邮等城市。和方国珍相似,张士诚也是叛伏无定。但方国珍是以招安为主,叛乱为辅,张士诚则反其道而行之。
至正十四年正月,张士诚在高邮称王,国号“大周”,建元“天佑”。九月,元丞相脱脱亲率数十万大军围剿他,张士诚迎战失败,退守高邮城。正当双方在高邮城下苦战时,元朝却自乱阵脚,中书右丞相哈麻唆使监察御史袁赛因不花等上书朝廷,弹劾脱脱“出师三月,略无寸功”,将其削去兵权,安置淮安路。元军将领多是脱脱亲信,因此人人自危,张士诚趁机反击,数十万元军四散溃逃。
至正二十三年二月,张士诚为向淮北扩张地盘,派出大将吕珍进攻刘福通据守的安丰。安丰城中粮尽,人相食,甚至于连埋在地下的腐尸都被挖出来吃掉了。还有掘井底泥,以人油炸来吃的惨事。刘福通抹下面子,派人向名义上服从龙凤政权的朱元璋求援。朱元璋手下谋臣刘伯温极力反对出兵,认为一旦出兵北向,西面的陈友谅乘虚攻来,将陷入极其不利的境地。且救得小明王后,将何以处之?供起来吧,自讨没趣;除掉吧,又何必要救他?还空背个弑主的罪名,不划算。
朱元璋不听,于三月初亲率大军渡江北上援救安丰,等他到达时安丰城已陷落,刘福通战死。朱元璋击退吕珍,找到韩林儿,一如刘伯温所料,拿着这位名分上的主子一时手足无措,只得将他安置在滁州,给些道义上的照顾。三年后的至正二十六年十二月,朱元璋派心腹廖永忠到滁州接小明王前往应天,可这却是一场彻头彻尾的谋杀阴谋——在瓜步渡江时,廖永忠在长江的滔滔激流中凿沉了韩林儿的坐船。