北魏后期,朝政腐败,朝中许多有实力的大臣纷纷割据一方,朝廷不能驾驭。在这种情况下,北魏皇室元颢投降南梁,请求梁武帝出兵助其回国称帝。于是梁武帝封元颢为魏王,命东宫直阁将军陈庆之领兵七千护送元颢北上称帝。
陈庆之出身寒门,长期不得重用,一直陪着梁武帝下棋,直到四十二岁才得到独立带兵的机会。这次只派出区区七千人,可以看出梁武帝是出于敷衍,然而正是梁武帝的敷衍成就了陈庆之神奇的北伐之战。
北魏上党王元天穆见元颢率军来犯,而境内又出现邢杲作乱,于是召集将领商议对策。大多数将领认为只有七千人的元颢势单力薄,不足为虑,于是元天穆将兵力调去攻打邢杲。元颢与陈庆之趁北魏防守空虚,迅速攻占荥城,兵临梁国城。梁国城驻军七万,守将是丘大千。丘大千曾经领教过陈庆之的厉害,虽然现在十倍于梁军,但是仍然不敢贸然出击,而是构筑了九座堡垒进行防守。陈庆之率领七千人发动攻击,只一个上午就攻克三座堡垒。丘大千斗志全无,请求投降。
北魏济阴王元晖业率领两万羽林军据守考城以阻挡陈庆之,考城四面环水,易守难攻。陈庆之浮水设桥,攻下考城,生擒元晖业,缴获无数战利品。之后,陈庆之挥军西进,兵锋直指北魏都城洛阳。
经过几战后,北魏皇帝深刻意识到这七千人马的厉害,于是调集重兵扼守荥阳、虎牢等地,以保卫洛阳。杨昱督兵七万,镇守荥阳,荥阳城防坚固,陈庆之一时未能攻克。而此时,元天穆和尔朱吐没儿也各率大军相继赶往荥阳,北魏军合计三十万。梁军士卒十分惊恐,陈庆之对士卒们说:“我们一路攻城略地有过不少杀戮,北魏士兵视我们为仇敌。现在我们只有七千人,而敌军有三十多万,大家只有抱着必死之心才可能免遭一死。敌军骑兵众多,我们不能与他们在野外作战,应当趁敌军全部到达之前迅速攻下荥阳作为据点。”说完亲自擂鼓助战,士卒们一鼓作气,攻克荥阳,活捉杨昱,而梁军只损失了五百人。
元天穆率领二十多万援军赶到荥阳时,荥阳已经落入陈庆之手中,于是将荥阳城层层包围。面对众多敌军,陈庆之毫无畏惧,率三千人出城攻击。陈庆之背城而战,大败北魏军,元天穆、尔朱吐没儿落荒而逃。陈庆之乘势进攻虎牢,守将尔朱世隆不战而逃。
北魏皇帝见荥阳和虎牢相继失守,大为惊恐,于是逃出洛阳,北渡黄河,诏令大将军元天穆、大丞相尔朱荣合剿南梁军。元颢在陈庆之的护送下顺利进入洛阳,称帝改元,大赦天下。
不久,元天穆率军四万攻克大梁,然后令费穆领兵两万攻打虎牢。陈庆之得知后,出兵掩袭元天穆。元天穆心生畏惧,北渡黄河而逃。费穆将要攻下虎牢,得知元天穆北渡黄河,于是无心再战,向陈庆之请降。陈庆之率兵进攻大梁、梁国两城,旦夕而下。陈庆之仅凭七千之众,从铚县出发至洛阳,攻占城池三十二座,大小四十七战,所向无敌。陈庆之和部下皆穿白袍,所以洛阳城中有童谣唱道:“名师大将莫自牢,千兵万马避白袍。”
元颢夺得北魏政权后,便想反叛梁朝,但因为局势尚未稳定,仍需要依靠陈庆之的力量,所以不敢公开与梁朝决裂。陈庆之对此有所察觉,劝说元颢:“我们远道而来,人心还未归服。如果他们知道我们的虚实,必定会联合兵力围剿我们,那时我们如何应付呢?不如上奏梁朝天子,请求增兵。”元颢打算采纳意见,但是有人阻止说:“陈庆之不过数千兵力,您就驾驭不了他,如果再增加兵力,他还会听您的吗?”元颢听后,改变主意,给梁武帝上书说:“现在黄河南北已经尽数平定,只剩尔朱荣负隅顽抗,我与陈庆之就能将他擒获,无须增兵。况且各州县刚刚归服,需要安抚,不宜增兵惊扰他们。”梁武帝于是下令北上增援的各路部队停止前进,驻扎在两国边境上。
尔朱荣听说北魏皇帝出逃,前去面见,并一路部署军队。北魏皇帝在尔朱荣的护送下南归洛阳,十天之内就集结百万之众。而元颢自夺得政权后,骄傲怠惰,独断专行,将以前的亲朋故友全部安排在朝中担任要职,终日与他们饮酒作乐,毫不体恤军国大事,使朝野上下大失所望。所以,尔朱荣南下之时,一路上各州县纷纷反叛,重投北魏。
尔朱荣率百万之众席卷而来,与元颢的军队在黄河两岸相持。陈庆之率领七千白袍军镇守洛阳的门户北中城,元颢则据守河桥南岸。陈庆之在三天内与尔朱荣的大军交战十一次,七千人的军队将尔朱荣的百万之众打得一塌糊涂。尔朱荣非常绝望,想下令退兵,等有机会再来攻打洛阳。
这时,尔朱荣身边的谋士劝阻说:“用兵之事,被打散了就重新聚集起来,战伤痊愈了再重新战斗,何况我们损失并不大!此次出征,百姓引颈相望,怎么能没有任何成就便撤退呢?百姓岂不是大失所望?不如征调百姓的木材,做成木筏,绕过陈庆之直接攻打元颢。”尔朱荣听从此建议,大造木筏,趁夜色渡过黄河,袭击元颢的军队。元颢军溃逃,元颢则率部数百人南逃。
元颢失败后,陈庆之以及他的七千白袍军成了一支孤军,局势无可挽回,于是陈庆之率领部下向东逃走。陈庆之先前夺取的城池,又尽数投降北魏。尔朱荣亲自率大军追赶陈庆之,但是担心追得太紧会遭陈庆之的反击,离得太远又担心追不上,放弃追赶又不甘心,所以就这样保持距离跟着陈庆之。
陈庆之来到嵩高河,恰逢河水大涨,七千白袍军全军覆没,只剩下陈庆之一人。陈庆之剃光须发假扮和尚,才得以逃回建康,北伐就此结束。