這個時候已經是秋天了,北方水草不足。於是等到第二年五月,慕容垂派太子慕容寶、遼西王慕容農、趙王慕容麟率十萬大軍進攻北魏,又命范陽王慕容德、陳留王慕容紹率步騎兩萬押運糧草。
拓跋珪得到訊息後,立刻把所有的部眾分成數路,帶著糧食和牛羊全部向北向西撤退,一直撤退了一千多里地,又把軍隊分成四路,分別退到黃河南岸隱蔽起來。燕軍到達北魏的都城盛樂(今內蒙古和林格爾縣土城子村北)卻只見一座空城,沒有一個人。拓跋珪就是連一隻羊,一粒糧也沒給燕軍留下。燕軍造船到黃河南岸尋找魏軍主力決戰,但渡河的時候正好遇到大風,只好暫停。但有十多艘船被大風吹到南岸,魏軍捉到這些俘虜後瞭解到,燕軍在起兵的時候,慕容垂已經有了重病。於是拓跋珪派人四處造謠,說慕容垂已經死了。那個時候通訊很困難,就是騎快馬通訊,由於受行軍道路情況的影響,也是很慢的。
慕容寶因為一仗未打,又年輕好勝,所以仍然堅持進軍。但接著又有謠言傳出,說趙王慕容麟要發動兵變,與他爭皇位。慕容寶立刻派人把慕容麟的所有部將慕輿嵩等人全給殺了。然後燒掉船隻,向南撤退。並命慕容麟率三萬騎兵殿後。
慕容麟莫名其妙地被大哥慕容寶給收拾了一頓,自己手下的幾員猛將全部被殺,心情很是不好,所以帶著這三萬騎兵,並不是沿途設伏佈哨防備追軍,而是打獵散心。結果燕軍主力退到參合陂的時候,突然被魏軍襲擊。燕軍大敗,死傷逃散無數,被擒者有四五萬人。
慕容寶和慕容農僅帶著四五千人馬拼命逃了回去。正在打獵的慕容麟見機不妙,帶著三萬騎兵先逃了。
拓跋珪大獲全勝後,本來打算把燕兵都放回去。中部大人王建說:“這些人放回去還要當兵回來打咱們,不如全殺了。”拓跋珪擔心這樣做會激起燕兵的仇恨,以後必拼死而戰。但最終考慮了一下雙方的國力對比,認為殺死這四五萬人,更有利於自己,於是把這些燕兵全部殺死。
慕容寶逃回中山後,見父親原來沒有死,而且病也好了,很有精神,他十分後悔,向父親請罪。弟弟慕容德為太子求情,慕容垂最終沒有懲罰太子,不過也再不敢用他了,自己親自領兵十萬去攻打北魏。
因為北魏剛打了大勝仗,沒想到燕軍這麼快又捲土重來,所以沒什麼防備,倉促出戰。很快丟失了平城等地,平城守將拓跋虔戰死。燕軍快速攻到盛樂,但盛樂又是一座空城。原來拓跋珪聽說慕容垂親自帶兵來了,知道自己不是人家的對手,帶著所有人再次逃跑,這次逃跑不再埋伏什麼部隊,而是逃得非常徹底,全部人馬撤往漠北。
燕軍本打算追擊魏軍,但慕容垂這時又犯了病,吐血不止,直到昏厥,燕軍只得退兵。退到沮陽(今河北省西北部懷來縣南)的時候,慕容垂病卒,終年七十一歲。
慕容寶帶著慕容垂的靈柩回到中山後,即燕皇位諡慕容垂為成武皇帝。慕容寶以幼子慕容策為太子;慕容德為車騎大將軍、冀州牧,鎮守鄴城;慕容農為幷州牧,鎮守晉陽;慕容鳳為冀州刺史,鎮守信都;慕容麟為左僕射;慕容隆為右僕射。
拓跋珪逃到漠北,一直到慕容垂病卒,才敢回到盛樂。慕容垂死後,拓跋珪認為後燕沒什麼可怕的了,遂舉傾國之軍四十多萬去征伐燕國。
前鋒李慄率三千騎兵在晉陽與晉陽守將慕容農打了一仗,李慄敗退,慕容農帶兵一路北追,結果魏軍的另一路人馬乘虛佔領了晉陽。慕容農追擊一段路程之後遇到燕軍主力,急忙撤退,但晉陽已被魏軍佔領。慕容農被前後夾擊,全軍覆沒,單身一人逃回到中山。
慕容寶既不敢出兵與魏軍決戰,也不願意退到河北。他最後決定加固中山城,據城而守。哪兒知道拓跋珪並不攻打平山城,而是徑自越過太行險關來到河北之地,又南下山東,到處攻城略地。慕容寶帶重兵龜縮城中,任憑魏軍四處佔地。最後燕國只有中山、信都、鄴城三座城池因為兵多城固沒有攻下,其他燕地全部被魏國所佔。
拓跋珪派族弟拓跋儀率五萬騎兵去攻鄴城,王建、李慄率五萬騎兵去攻信都,自己親率大軍去攻中山。但中山城經過慕容寶的經營,的確是城高險固,易守難攻。僅僅在一天之內,拓跋珪就損失了七八千的兵力,他一看這樣強攻不行,只好先退兵,把自己所帶軍隊分成兩路,去助攻鄴城和信都。
拓跋珪的舅舅、遼西公賀賴盧率三萬騎兵來幫助拓跋儀攻鄴城,但賀賴盧性情桀驁,不肯聽拓跋儀的指揮。拓跋儀也拿他沒辦法,於是兩支軍隊各扎各的營寨,各攻