燕国太子慕容宝对参合陂的失败感到羞耻,请求再次攻打魏国,司徒慕容德向燕主慕容垂说:"敌寇因参合陂的胜利,有轻视太子的心理;我国应凭借陛下的神奇谋略来降服他们,否则将成为隐患。"
于是慕容垂派遣清河公慕容会总理留台事务驻守在龙城,又派遣阳城王兰汗担任北中郎将驻守在蓟城;并令慕容隆、慕容盛率领所有精锐部队回到中山,计划大举进攻魏国。然后慕容垂留下苑阳王慕容德守卫中山,他自己率领军队秘密出发,越过青岭,经过天门,开凿山口,打通道路,行动出于魏国的意料之外,直奔云中。魏国陈留公拓跋虔率领部众三万多人驻守在平城,慕容垂到达青岭,派遣辽西王慕容农、高阳王慕容隆作前锋去攻击他们。拓跋虔一向都没有戒备,燕国军队到达平城,拓跋虔这才发现,仓忙率领部下迎战,不幸战败被杀,燕国军队于是收纳了他的部属。拓跋珪知道后震惊恐惧,打算逃跑,各部落的首领听说拓跋虔死了,都怀有二心,拓跋珪不知道往哪里去为好。慕容垂在经过参合陂时,看到先前的尸骨堆积如山,就为他们设置祭奠,兵士们都悲痛哭泣,哭声震撼山谷。慕容垂惭愧愤恨,口吐鲜血,因此发病,就躺在两马架成的卧轿上前进,一直到平城西北三十里的地方才停了下来。太子慕容宝听说了以后,就率领军队返了回来。燕国军队中叛逃的人,赶忙去向魏国报告这个消息,他们说:"慕容垂已经死了,尸体就放在行军的马车上。"
拓跋珪打算趁机追击,又听说平城已经沦陷,于是率领军队返回阴山。慕容垂在平城停留了十天,病情日益严重,就在修成燕昌城后返回,途中在上谷的沮阳去世;沿途保守秘密,直到中山才发布讣告,于是太子慕容宝继位称帝。魏国的臣属也都劝说拓跋珪称帝,拓跋珪因此开始建立天子的旌旗,出入都清扫道路,禁止闲杂行人,并任用上谷人张恂参军事。张恂劝说拓跋珪进军攻取燕国,拓跋珪很赞同他的意见,决定大规模地讨伐燕国。于是调遣步、骑兵四十多万,由马邑率领向南出发,越过句注山。只见旌旗招展,前后二千多里,敲着战鼓行进。左将军雁门人李粟率领五万骑兵充当前锋,另外派遣将军封真等从东路出兵到军都,去攻取燕国的幽州。魏国军队到达阳曲,沿着西部山脉去晋阳,魏国骑兵围绕城池大声地呼喊了一阵,然后离去。燕国辽西王慕容农只好带着妻子儿女,率领几千骑兵向东逃跑。魏国中将军长孙肥随后追赶,一直追到潞州,慕容农的军队全军覆灭,抓获了慕容农的妻子儿女,慕容农受伤逃跑,仅带三名骑兵回到中山。拓跋珪于是夺取并州,开始设立尚书台等机构。刺史、太守、尚书郎以下官职都让儒生当;士大夫们前往军营前,都被招呼进去接见慰劳,让他们每个人都说完心里想说的话,稍微有一点才能的人都加以提升任用,然后派遣辅国将军奚收继续攻取汾州。燕主慕容宝听说魏国军队将要到来,便在东堂和臣属们商量应该如何应对之事,中山尹苻谟说:"现在魏国军队人数众多,兵力强盛,他们从千里之外来作战,乘胜进军,士气旺盛。如果放他们进入了平地,那真是不可战胜的了,我们应该堵住险峻地势来抵抗他们。"
中山令睦嘧说:"魏国骑兵众多,往来迅速,一般在马上携带粮食,不过只能用十来天;我们应该命令郡县聚集起民众,一千家筑一个城堡,挖深壕沟加厚城墙,将四方的财物、粮食都清点收藏起来等待他们。魏国的军队到达后,掠夺不到什么东西,不过只十天的时间,他们的粮食都吃光了,自然就要撤回去。"
尚书封栾懿说:"现在魏国军队几十万,已是天下的劲敌,我国民众就是构筑了城堡,也不足以坚守,你这样反而是聚集了兵士和粮食来资助他们,而且你这样还会动摇民心,向他们显示了我们的薄弱。臣以为,我们不如挡住关隘来进行抵抗,这才是上等的策略。"
赵王慕容麟说:"魏国现在乘胜进军,士气旺盛得很,其锋芒不可抵制。我们应该稳固地守卫在中山,等到他们出现漏洞时,再乘机出击。"
于是开始修筑城墙,聚集粮食,做长久作战的准备工作,军队中一切的大小事务,全部委托给慕容麟去主持处理。拓跋珪进军攻打常州抓获了太守苟延,于是从常山以东的各郡县都来归附魏国。各郡县令有的逃走,有的投降,只有中山、邺城、信都三座城池仍为燕国驻守。拓跋珪命令东平公拓跋仪率领五万骑兵攻击邺城,冠军将军王建,左将军李栗各率所部攻击信都,拓跋珪自己进攻中山。当时燕国高阳王慕容隆守卫在南面的城廓,率领部队奋力迎战,从早晨到申时,杀死了几千人,魏国军队才撤退,拓跋珪对各将领说:"中山城池坚固,慕容宝必定不肯出城迎战,这样猛烈攻击只会损伤自己的兵士,长久包围又耗费粮食,不如先夺取邺城、信都再说,然后想办法再攻取中山。东平公拓跋仪久攻邺城不下,士气稍减,燕国范阳王慕容德就命令南安王慕容青等,趁夜晚赶到邺城偷袭魏国军队,魏国军队失败,退到新城驻守。慕容青等请求追击,别驾韩淖说:"古人先作计议再作战,魏国军队不可攻打的理由有四点:孤军深入,野外作战有利,这是第一;深入到我们的京城近郊,军队驻扎在没有退路的地方,所以敢于拼命,这是第二;魏国前军失败后,后面的阵势还很稳定,这是第三;他们的兵士多,我们的人数少,这是第四。另外,我国的军队不应出动的理由还有三点:在自己的领土上作战,这是第一点;出击后不能获得胜利,人心难以安定,这是第二点;城池没有修理加固,敌人来时都还没有做好准备,这是第三点。现在魏国军队没有物资粮食,这是一个事实,不如深挖壕沟,高筑城墙,稳住军心来打垮他们。"
慕容德听从了他的意见,就召慕容青返回了。燕国军队既回,贺讷的弟弟魏国辽西公贺赖卢,率领三万骑兵,同东平公拓跋仪会合后,又来攻打邺城,魏国范阳王慕容德向秦国请求救援,秦国军队没有出动,于是邺城中人心恐惧。恰逢拓跋仪和贺赖卢之间产生矛盾,贺赖卢自认为是魏王拓跋珪的舅舅,不接受拓跋仪的调度,拓跋仪的司马丁建又从中挑拨离间,并暗地和慕容德来往,写信射入邺城向慕容德说明了这些情况。这天狂风大作,尘土卷起,天色昏暗。贺赖卢军营忽有闪光,丁建对拓跋仪说:"贺赖卢火烧军营发生变乱了。"
拓跋仪相信了他的话,连忙率领自己的军队向后撤退。贺赖卢听说拓跋仪撤退了,也向后撤退。丁建趁此机会率领他的部众前往慕容德那里投降了他,并对慕容德说:"拓跋仪的军队疲惫了,可以攻打。"
于是慕容德派遣桂阳王慕容镇、南安王慕容青率领七千骑兵分别追击魏国军队,把魏国军队打得大败。与此同时,慕容宝拿出所有珍宝和宫女,去招募各郡的盗寇攻击拓跋珪,拓跋珪退回时看到军营中发生内乱,他想返回到北方,就派遣他的弟弟国相拓跋涉延向燕国请求和解,并且请求用自己的弟弟作人质。燕主慕容宝知道了魏国有内乱不答应,就派冗长仆射兰真责备拓跋珪忘恩负义,所以调动所有的部众,有步兵十二万,骑兵三万七千名,都驻扎在曲阳的柏肆,并在滹沱水北岸设下大营来阻击魏国军队。魏国军队见此情形,就在滹沱水南岸扎下了营寨。慕容宝暗地派军队在夜晚渡河,又募集一万多敢于拼死的人去袭击魏国军营。慕容宝在军营的北面,摆下阵势作为援兵,招募来的军队就利用风向放火烧营,并激烈地攻击魏国军队,魏国军队大乱,拓跋珪惊慌起床,抛弃军营赤脚逃跑。燕国将军乞特真率领一万多人到拓跋珪的账下,仅得到拓跋珪的衣服和靴子。忽然燕国招募来的军队无缘无故自相残杀,相互之间砍杀射击,拓跋珪在军营外远远望见,迅速击鼓召集部众,左右的人和中军的将领兵士又都陆续地前来聚集,并在军营外设立很多的火把以壮大声势。然后拓跋珪指挥骑兵冲击燕国军队,燕国招募来的军队大败,掉头奔回慕容宝的营阵,慕容宝只好率领军队又渡回滹沱水的北岸。于是魏王拓跋珪整顿军队向前进逼,就和燕国军队相互对峙。燕国军队士气大丧,慕容宝率领军队返回中山,魏国军队尾随追击,燕国军队屡战屡败。慕容宝心里恐惧,就抛弃大营,独自率领二万骑兵携带财资货物奔逃。这时正遇狂风暴雨,被冻死的人一个接着一个,慕容宝担心这样会被魏国军队追上,便命令兵士沿途丢下几十万件兵器战袍,连一寸长的短刀也没有带回去,因此燕国的朝廷官员、将领兵士归降的,和被魏国军队俘虏的人非常之多。