慕容垂重建燕国比拓跋珪早两年,后燕实力比北魏强,且两国原本世代通婚,因此拓跋珪依附后燕,每年都派使者往来,向后燕上贡。拓跋珪复国之初,多次平定内乱与对外攻伐,都得到了后燕的支援。
随着北魏国力的日益强大,拓跋珪逐渐萌生消灭后燕之心,而后燕也想进一步控制拓跋氏,两国关系比较微妙,但还维持着表面交情。公元391年,拓跋珪派拓跋觚向后燕进贡,后燕扣下了拓跋觚,并向北魏索要大量马匹,拓跋珪拒绝了这一要求。于是两国关系恶化,拓跋觚也一直被后燕扣留,拓跋珪转而联合西燕对付后燕。
登国九年(394),后燕皇帝慕容垂出兵进攻西燕,西燕帝慕容永向北魏求援,拓跋珪便派军队救援西燕,可是援军尚未赶到,西燕都城就已失陷,西燕灭亡。华北一带只剩北魏与后燕两国互相对峙,魏燕之战一触即发。
登国十年(395),慕容垂派太子慕容宝率大军讨伐北魏。拓跋珪得到消息后,与众臣商议对策,长史张衮献计说:“北燕刚刚战胜西燕,此刻肯定会轻视我们。我们不如佯装后退,引燕军深入。骄兵在防御方面必有漏洞,我们可以找出这些漏洞,趁机击败燕国。”拓跋珪采纳了张衮的意见,率主力军撤退到黄河以西,躲避燕军锋芒。
同年七月,后燕军队长驱直入到达五原,收降北魏其他部族三万多人,又征收谷物,开始造船,打算渡河发动总攻。拓跋珪亦进军河边,与燕军对峙。北魏一面派使者向后秦请求援兵,一面派兵堵截燕军与后燕都城中山的道路,并抓住取道去前线的燕国使者。慕容垂在出兵时已经患病,慕容宝到五原后几个月都没收到国内的消息,于是拓跋珪押着抓到的使者走到河边对慕容宝大喊:“你的父亲慕容垂已死,你为什么还不回去?”慕容宝消息不通,一时不知真假,听到喊话的燕军也乱了阵脚,军心受到影响。后燕赵王慕容麟的部下慕容嵩误认为慕容垂真的死了,便想要杀死慕容宝,结果事情败露,慕容嵩被杀。此时天气渐冷,将士们亦无心恋战,慕容宝只得烧船撤退。
当时,黄河尚未结冰,慕容宝认为魏军无船,不会追击他们,于是没有在后方留军掩护,慢慢撤退。谁知次月寒流突至,一夜之间黄河结冰。拓跋珪立刻率领轻兵渡河追击燕军。后燕军队行至参合陂时,突然狂风大作,慕容宝便下令就地扎营。这时,魏军已经追上燕军,并连夜部署,悄然接近燕军。次日清晨,燕军准备出发时,才发现漫山遍野都是魏军。燕军士兵大多惊慌失措,混乱不堪。拓跋珪趁势驱兵攻击,燕军四面奔跑落水、人撞马踩,轧死淹死者数以万计。慕容宝仅率几千士兵逃出,四千多燕兵投降,北魏俘获文武百官数千人,缴获辎重无数。
拓跋珪留下后燕被俘的大臣中有才可用的人,其余的打算全部都发给衣服粮食,放他们回家,希望用这样的恩德来博得后燕百姓的好感。中部大人王建对拓跋珪说:“后燕这次动员全国力量来进攻,我们获得这次胜利,纯属意外,如果把这些人全部杀掉,后燕的内部就空虚了,以后再攻打后燕也就容易多了。”拓跋珪觉得有道理,便下令把这些投降的后燕大臣全部活埋。