就在元颢入主洛阳六十五天之后,尔朱荣带着从洛阳逃走的孝庄帝,集结了三十万大军,挥师洛阳。
尔朱荣南下之后,并州、肆州又不安定了,于是他任命尔朱天光为并州、肆州等九州行台,仍负责并州的事务。尔朱天光到晋阳后,安排布置妥当,所属辖地都稳定了。
费穆投降陈庆之后被带到洛阳,元颢将他领入殿中,以他在河阴唆使尔朱荣杀害文武百官之事斥责于他,并杀了他。
洛阳城内的元颢既然已经夺取了政权,便秘密跟临淮王元彧、安丰王元延明谋划反叛梁朝。由于混乱的局面尚未平定,还需要借助陈庆之的兵力,所以表面上仍然很团结,但实际上已经同床异梦,言语之间颇多猜忌。
陈庆之也暗中做了防备,他劝说元颢:“现在我们远道而来,不服的人还很多,他们如果知道了我们的虚实,联合兵力,四面包围,我们将如何抵御呢?我们应该上启梁朝天子,请求再增派精兵,同时敕令各州,如果有梁朝人沦落在此地的务必都送过来。”
元颢原本本打算采纳他的建议,元延明却对元颢说:“陈庆之的军队不过几千人,您就已经很难驾驭了,现在再增加他的兵力,他还怎么会肯听您的命令呢!您的大权一旦失去,一举一动就都要由别人决定,这样大魏的宗庙也从此要覆亡了。”
元颢便没有采纳陈庆之的意见,他又担心陈庆之暗中向梁武帝上表汇报情况,便自己给梁武帝写了一封表文,说:“现在河北、河南全部平定了,只有尔朱荣还在顽抗,我与陈庆之便能擒获他。目前各州郡刚刚归附,正需要安抚,不宜再增加兵力,使百姓惶恐不安。”
梁武帝便诏令正在进军的各部队都停在边境上,不再前进。
洛阳城中的梁朝军队不满一万,而羌族、胡族的军队十倍于梁军,军副马佛念向陈庆之建议说:“将军您扬威河、洛,声震中原,功高势强,却被元颢所猜疑,一旦发生不测,能不担心吗?您不如趁元颢还没有防备之际,杀掉元颢,占据洛阳,这是千载难逢的好机会呀!”陈庆之没有采纳他的意见。
元颢先前任命陈庆之为徐州刺史,于是陈庆之坚持要前往彭城上任,元颢心里很害怕,没敢让他去,对他说:“圣上将洛阳全部委托给您负责,如果忽然听说您要离开作为魏国寄托的洛阳,而去徐州的话,便会认为您这是急于求取功名富贵,而不为国家考虑的。这不仅有损于您的声望,恐怕我也会受到圣上的责难。”因此,陈庆之便不敢再说什么了。
元颢派遣都督宗正珍孙和元袭据守河内,尔朱荣率军攻打河内,元天穆率兵于尔朱荣会合,他们攻取了河内城,杀死了宗正珍孙和元袭。
尔朱荣与元颢相持于黄河边上,陈庆之为了争取战略上的主动,带领自己的白袍军渡过黄河,驻守中郎城,元颢亲自拒守河桥南岸。陈庆之在中郎城下与魏军展开大战,三天十一战,尔朱荣伤亡惨重,却无法渡河。
有一位夏州义士为元颢镇守河中的小州,他暗中与尔朱荣串通好,请求为尔朱荣破桥立功,由尔朱荣率兵到河桥去接应。等到桥破之后,尔朱荣的部队没有接应上,元颢将通敌的士兵全都杀了,尔朱荣感到非常失望懊恼。
元颢又派元延明沿着黄河固守,北魏军队无船渡河,便开始商议回师北方,以后再想办法攻打元颢。
杨侃对尔朱荣说道:“大王您从并州发兵的时候,是已经知道夏州义士会给您来做内应所以才来的呢,还是想真正施展您的雄才大略匡扶帝室才来的呢!用兵之事,谁不是打散了再聚集起来,伤好了再继续战斗,何况现在我们并没有受到什么损失,怎么能由于这一件事没成功,便将所有的机会就都废弃了呢!当今天下百姓望眼欲穿,就看您这一次举动了。如果没有取得什么收获,您便很快就回师的话,那么会使百姓大失所望,各自考虑何去何从,谁胜谁负也就难以预料了。所以不如征调百姓的木材,多做一些木筏,沿着河岸排列,在数百里内,都做出渡河的架势。首尾既然相距很远,这就使得元颢不知该防守哪一处好,一旦我军渡过黄河,一定立下大功。”
高道穆也对尔朱荣说:“如今圣驾被迫外出,皇上忧虑,臣下应当感到羞辱。大王您拥有百万大军,辅天子而令诸侯。如果分兵制造木筏,各个分散渡河的话,破元颢的军队易如反掌,为何却舍此而北归,使元颢又得以修整城池,整治兵器,在四方征集兵员呢?这真是养虺成蛇,后悔不及啊!”
尔朱荣说道:“杨侃已经谈了这一计策,我正要跟大家商议一下。”
刘灵助对尔朱荣说:“不出十天,黄河以南一定会平定。”尔朱荣一向信任刘灵助,听闻此话,坚定了他渡河的决心。
伏波将军杨檦跟他的族人住在马渚,这时,他主动向尔朱荣说自己有几艘小船,请求为大军做向导。
尔朱荣命令车骑大将军尔朱兆和大都督贺拔胜率军捆绑木材做木筏,绕过陈庆之的军队,从马渚西边的硖石这个地方悄悄地夜渡黄河,袭击的元颢的儿子元冠受的部队,并抓获了元冠受。
安丰王元延明的士卒们知道了这一情况后,便纷纷溃散奔逃。元颢不知所措,率领麾下的几百名骑兵向南逃走,陈庆之孤掌难鸣,便收拢剩余的步兵、骑兵共几千人,结队向东逃归。元颢原先攻取的那些城池,全部又投降了北魏。
尔朱荣亲自率军追击陈庆之,正碰上嵩高河水暴涨,陈庆之的部队在追兵和大水的冲击下死散殆尽。陈庆之只身一人剃光了头发和胡须,打扮成一个和尚,从小路逃出汝阴,在豫州得到当地人程道雍的帮助,这才辗转回到了建康。梁朝仍按功劳授予他右卫将军,封永兴县侯。
北魏中军大都督杨津率军进入殿中,洒扫宫廷,封闭府库,然后出来到北邙迎接孝庄帝,痛哭流涕地请罪,孝庄帝安慰并犒赏了他。
孝庄帝入居华林园后,大赦天下,任命尔朱兆为车骑大将军、仪同三司,跟随孝庄帝从北方来的将士以及跟随他逃难的文武百官和那些未投降元颢的一律加官五级,河北向朝廷报告敌情的官员和河南坚决未降元颢的官员加官二级,又加封大丞相尔朱荣为天柱大将军,并增加封户至二十万户。
北魏孝庄帝在都亭设宴慰劳尔朱荣、元天穆以及从北方来洛阳援救的将领们,按功劳大小分别给予不同的赏赐,凡是受过元颢的爵位、奖赏官职和免除赋役的人,对其所得全部追了回来。
元颢从轩辕向南逃至临颍,随从的骑兵各自逃散,临颍县卒江丰杀了他,将元颢的首级送到了洛阳。临淮王元彧又归附了孝庄帝,安丰王元延明带着妻子儿女前来投奔了南梁。
陈庆之攻入洛阳时,萧赞向梁武帝上书,请求允许他回到梁朝。当时吴淑媛还在,梁武帝让吴淑媛将萧赞幼时所穿的衣服给萧赞送去,书信还未传到,陈庆之便失败了。
陈庆之从北方回来后,特别看重北方人,朱异觉得很奇怪,便问陈庆之为什么这样,陈庆之叹道:“我当初认为长江以北地区都是戎狄之乡,等到了洛阳之后,才知道衣冠人物都在中原地区,不是江东所能企及的,我们有什么理由轻视北方人呢!”