高氏兄弟刚刚归顺,前幽州平北府主簿邢杲(音:高)又率领河北十余万户流民(《北史·李浑传》称有众二十万)在青州的北海(今山东省潍坊市)发动叛乱。原来邢杲率众屯据在河北鄚城(河北省任丘县境),与葛荣相持将近三年,广阳王元渊战败后,邢杲这才率众南渡黄河,来到青州境内。流民所到之处与当地土著自然会发生各种各样的矛盾和冲突,经常受到当地人的欺凌,双方矛盾非常尖锐。《北齐书·阳休之传》称:“是时葛荣寇乱,河北流民多凑青部。休之知将有变,乃请其族叔伯彦等曰:‘客主势异,竞相凌侮,祸难将作。如鄙情所见,宜潜归京师避之。’诸人多不能从。”也说明了这一点。为了解决这一矛盾,当时,胡太后曾下诏在流民来到的地方设置郡县,选拔流民中的豪强担任太守。时任青州刺史的元世俊上书请求设置新安郡,以邢杲为太守,但北魏朝廷却没有答复。孝庄帝继位后,北魏朝廷沙汰、选拔地方官员,以邢杲的侄儿邢子瑶为河间太守,而未予邢杲一官半职,这让邢杲十分恼火,遂聚众谋反,他自称汉王,改元天统。当时河南人经常嘲讽河北人喜欢吃榆叶,故此称邢杲的叛军为“沓榆贼”。
北魏朝廷没有任命邢杲官职,其实也就意味着他所率领的这十余万户河北流民处于没有庇护地的境地,这些流民将随时受到青州齐州当地豪强的欺凌,因此,在邢杲造反以后,不到十几天,就有十余万人投靠到他的麾下。六月二十二日,北魏朝廷任命征东将军李叔仁为车骑大将军、仪同三司,率领军队前去讨伐,但是,摆在尔朱荣面前需要优先解决的却是在河北纵横驰骋的葛荣,因此,北魏朝廷根本没有足够的兵力用于两线作战,所以,对于邢杲先采取了军事威慑、以安抚为主的策略。魏兰根是邢杲的舅舅,孝庄帝命令他前去招抚邢杲,但邢杲却不从。
与此同时,河北葛荣军粮食缺乏,葛荣派遣他的仆射任褒率军南下抢粮,前锋一直进抵沁水(河南省济源市东北),北魏朝廷任命太尉元天穆为大都督东北道诸军事,率领宗正珍孙等将前去讨伐。六月二十五日,孝庄帝下诏称:“朕当亲自率领军队,要扫清燕代。”并任命大将军尔朱荣为左军统帅,上党王元天穆为前军统帅,司徒杨椿为右军统帅,司空穆绍为后军统帅。葛荣闻讯,率部北撤到相州以北地区。七月十日,北魏朝廷加授尔朱荣为柱国大将军、录尚书事。
七月二十七日,北魏光州百姓刘举聚众在濮阳(今河南省濮阳市)造反,自称皇武大将军。同月,关陇地区的万俟丑奴也自称天子,设置百官,当时,波斯国向北魏进贡一头狮子,被万俟丑奴截留,他遂改元为神兽。北魏泰山太守羊侃因为他的祖父羊规生前曾任刘宋武帝刘裕的祭酒从事,常有南归之心,徐纥依附于羊侃以后,也劝说他起兵,羊侃遂起兵造反。羊侃的堂兄羊敦是北魏兖州刺史,暗中得到消息后,遂固守州城(今山东省兖州市东北)抵御羊侃。八月,羊侃率军偷袭羊敦,却没有攻下城池,遂在州城之外修筑了十几座小城封锁住州城,并向南梁派去使者投降。梁武帝萧衍下诏命令羊鸦仁(亦为泰山羊氏,前由北魏投降南梁)等人率领梁军北上接应,北魏朝廷晋封羊侃为骠骑大将军、泰山公、兖州刺史,但羊侃却斩杀了北魏使者,拒绝接受。同月,南梁将军王弁入侵北魏徐州,北魏蕃郡(今山东省藤县)百姓续灵珍率领一万多人进攻州城,响应梁军。北魏徐州刺史杨昱发兵进攻续灵珍的变民,杀死了续灵珍,王弁遂不战而退。八月十九日,北魏大都督宗正珍孙率南广州刺史、都督郑先护转兵讨伐濮阳的刘举,将其消灭。
此时,葛荣已率领军队南下,包围了邺城,号称百万之众,相州刺史李神闭城固守。葛荣的游骑兵已越过汲郡(今河南省卫辉市),所过之处,烧杀抢掠,尔朱荣上书请求前去讨伐。
九月,尔朱荣命令侄儿肆州刺史尔朱天光镇守晋阳,他对尔朱天光说:“凡是我不在的地方,除你之外其他人不能让我放心。”尔朱天光是尔朱荣的堂侄儿,勇敢果决,善骑马射箭,尔朱荣对他非常喜爱,经常与其讨论军国大事。将后方安排妥当之后,尔朱荣亲自率领七千精锐骑兵,每位骑兵还配备了一匹副马,倍道兼行,从滏口东下,以侯景为先锋。侯景,字万景,朔方人,骁勇善射,被选为北镇戍兵,六镇之乱后投靠了尔朱荣。侯景性格残忍,军纪很严,但所部抢来的财物全部平均分配,因此,部下也都乐意为其效命,尔朱荣对他很是看重。关于魏军与葛荣军的人数一直是有争论的,葛荣号称有百万之众,自然是个虚数,但自从他吞并杜洛周之后,人数已达十余万,至今人数当有三四十万。尔朱荣所领军队人数史料却记载的互相矛盾,《魏书·尔朱荣传》称是七千,而同书的《孝庄纪》则称:“柱国大将军尔朱荣率骑七万讨葛荣于滏口,破擒之,余众悉降。”据学者考证,尔朱荣率领的七万之众才是比较合理的。当初,尔朱荣的部队行至襄垣(今山西省长治市),命令将士们进行围猎,只见一双兔子从尔朱荣马前突出,尔朱荣跃马弯弓,对将士们说道:“如能射中,就能生擒葛荣,射不中,就不行。”尔朱荣两箭射去,两只兔子均应弦而倒,将士们顿时士气大振。尔朱荣战胜后,遂在此地树立了一座纪念碑,号称双兔碑。
此时,元天穆的讨伐大军则驻扎在朝歌(今河南省淇县东北)以南地区,大约是因为宗正珍孙率部前去讨伐刘举,元天穆迟迟没有主动向葛荣发起攻击。葛荣在兼并杜洛周之后,就一直在河北横行,尔朱荣所部与葛荣众寡悬殊,人们都认为尔朱荣难以取胜。葛荣听说后,喜形于色,对属下说:“尔朱荣容易对付,你们只用多准备长绳子,等他们来了,就把他们一一绑住。”从邺城以北,葛荣将部队摆出长数十里的一字长蛇阵,象簸箕一样两翼张开齐头并进。
战前,尔朱荣做了充分的准备:一是布置疑兵。尔朱荣所部在接近葛荣军之后,埋伏在山谷之中,他命令三名督将各率数百骑兵,分作三处,扬尘呐喊,迷惑葛荣军。二是以棒代刀。尔朱荣认为在短兵相接之际,刀砍不如棒击利落,他下令每位将士都携带一根短棒,放于马鞍一侧;他又考虑到临战过程中,将士们也许会耽误时间下马砍掉敌人人头,耽误了追杀,他还下令此战不准争砍人头,只用以木棒棒击敌人即可。三是以精兵寻找敌人薄弱部位进行突击。葛荣人数虽多,但一字长蛇齐头并进,一旦一处被突破,将立即首尾无法兼顾,陷于大乱,对此,尔朱荣心知肚明,他也明白精兵的重要性,于是,他挑选了数支敢死队,朝葛荣之军发起了猛攻。四是突出葛荣背后,前后夹击敌人。五是瓦解敌人。由于尔朱荣的手下很多都是六镇的人,因此,在战前尔朱荣就派这些人偷偷去说服葛荣军中的将领归降。《北齐书·神武纪》就称,高欢就在战前说降了葛荣七位将领。在决战之前,尔朱荣梦见一个人向葛荣索要千牛刀,葛荣开始的时候不想给,那人说道:“我是道武皇帝,你岂敢违抗!”葛荣遂将刀奉还给了那人,那人将刀交给了尔朱荣。尔朱荣醒来后,不禁大喜,心知此战肯定能胜。
当尔朱荣以三处疑兵让葛荣之军人心惶惶之后,他即命令数支敢死队从不同方向杀入葛荣大军之中,一时间杀声四起,葛荣大阵立即陷于混乱,就在这数支敢死队打乱了葛荣阵脚之后,尔朱荣亲自率领大军呐喊着又杀向葛荣军,尔朱荣大军随着尔朱荣战旗所指,一路纵贯葛荣一字长蛇阵,一直杀到葛荣所部背后,而后,又折返身来,从葛荣大阵的背后再度杀回,葛荣大军腹背受敌,顿时大败,尔朱荣军临阵活捉了葛荣。葛荣被擒后,叛军群龙无首,遂全部投降。
霎时间数十万军队全部投降,如何妥善安置这些降众,是尔朱荣面临的一个大问题。在处理这一问题上,又显示了他的过人之处,由于降众的人数太多,如果现在就将他们编组,分配到各部队,尔朱荣担心会引起他们的猜疑,甚至会再度激起变乱,于是,他下令解散,全部降众想去哪里都行,亲戚朋友们可以相互照顾,随意到哪里居住都可以,听了这话,降众们顿时大喜,立即三五成群各奔东西,数十万人一天之内全部散尽。但是,尔朱荣已经提前在各个方向一百里以外设置了收容站,在那里根据各人的意愿进行安置,对于其中的将帅,根据各人的才能委任官职,新归附的人都安定了下来,当时的人们都对尔朱荣机敏的处置十分佩服。但是,根据《北齐书·神武纪》称:“葛荣众流入并、肆者二十余万,为契胡陵暴,皆不聊生,大小二十六反,诛夷者半,犹草窃不止。”也就是说,葛荣的降众大部分被尔朱荣裹挟到了自己的根据地并州和肆州,根据各人意愿安置其实不过是尔朱荣耍的手腕而已。
尔朱荣一战全歼葛荣,冀州、定州、沧州、瀛洲、殷州五州全部安定。当时,元天穆尚在朝歌之南,穆绍和杨椿之军还未从洛阳出发,而葛荣已被尔朱荣消灭。但是,据《周书·贺拔胜传》记载:(贺拔胜)“从太宰元穆北征葛荣,为前锋大都督。战于滏口,大破之,虏获数千人。”也就是说,贺拔胜作为元天穆的先锋,在尔朱荣与葛荣决战之前已率部来到了前线,因此,参与滏口大战的部队不仅仅是尔朱荣从晋阳带来的这七万人。
九月二十一日,北魏朝廷宣布大赦,并改元为永安。二十七日,孝庄帝晋升尔朱荣为大丞相、都督河北畿外诸军事,增加食邑一万户,与前合计为三万户,又加尔朱荣为太师;任命尔朱荣世子、抚军将军、太常卿尔朱菩提为使持节、骠骑大将军、开府仪同三司;晋封尔朱荣的儿子平昌公尔朱文殊为平昌王、昌乐公尔朱文畅为昌乐王,以杨椿为太保,以城阳王元徽为司徒。十月三日,葛荣被押送到了洛阳,孝庄帝驾临阊阖门,葛荣伏地叩头谢罪,孝庄帝下令将其拉至洛阳街市斩首。
当初,宇文泰的父亲宇文肱追随叛军鲜于修礼部进攻定州,在唐河(今河北省唐县)战死,宇文泰留在了鲜于修礼军中,其后,又追随葛荣,葛荣战败后,尔朱荣喜爱宇文泰之才,遂将他留在自己军中担任一名统军。