遊牧民族,春夏的時候部族們各自放牧,秋冬的時候則集中起來向南進攻。拓跋燾利用柔然的這個規律,在他們放牧的時候,兵分兩路,一路由司徒長孫翰領兵由西道透過大娥山,另一路拓跋燾親自率軍由東道透過黑山(今內蒙古巴林右旗北罕山),越過大漠,在可汗庭(今蒙古國哈爾和林西北)合擊柔然。兩路軍隊全部為輕騎兼馬(每一騎兼有副馬,副馬為一到兩匹),不帶輜重,在慄水(今翁金河)時遇到柔然主力後迅速出擊。柔然一點兒防備都沒有,被殺得落花流水。大檀向西逃竄,大檀的弟弟匹黎一部在反擊中被長孫翰的騎兵全部殺死。
六月,拓跋燾領軍沿慄水西進至菟園水(今圖音河),分兵搜捕大檀及其部眾,在東西寬約五千裡,南北縱深約三千里的廣大土地上,魏軍不斷消滅逃散的小股柔然部隊。原來被柔然征服的高車等部眾三十餘萬人也乘機倒戈,歸附北魏,幫助魏軍對付柔然。拓跋燾一直追到涿邪山(約今阿爾泰山脈東南部)才引兵東還。大檀因為遭遇到幾乎滅國的慘敗,悒悒而亡。他的兒子吳提繼位後,向魏國稱藩乞和,拓跋燾遂以柔然為北藩。
這時宋國的劉義隆已經幾次三番去信要求北魏還給宋國黃河南岸的地方,見北魏毫不理睬,便命右將軍到彥之,安北將軍王仲德,兗州刺史竺靈秀,共率五萬精兵北伐。又命驍騎將軍段宏,率騎兵一萬,主攻虎牢,豫州刺史劉德武,領兵一萬人作為後援,從弟長沙王劉義率兵三萬,坐鎮彭城,為總指揮。又派殿前將軍田奇再一次去北魏告誡拓跋燾,宋國只是收復黃河南岸的地方,並沒有打算去爭奪黃河北岸領土,希望北魏能夠主動讓出來。
拓跋燾讓田奇告訴劉義隆:“我剛生下來的時候就聽說河南之地是屬於北魏的,你們這是侵略行為而不是收復失地行為。宋國要來儘管來,看你們有沒有本事奪得這片地方。”
因為北軍不慣水戰,而且拓跋燾怕任用河南之地的司馬楚之、魯軋、韓延之等人會激起宋國同仇敵愾,於是把所有軍隊都撤到黃河北岸,並調集北方軍隊在河北集結。宋軍一路北上,先到礎�x,再西進滑臺,再到洛陽,再到虎牢,一路都是城門大開,魏兵盡退。到彥之見進兵這麼順利,以為魏軍總算是想明白了,所以主動讓出了地盤,遂命諸將分守各地城池。王仲德告誡到彥之說:“到冬天河水枯乾,黃河結冰時,魏軍一定會南侵。我們要做好準備。”但到彥之並沒有放在心上。果然到了這年冬天,魏軍突然南下,宋軍倉促集結應戰,結果大敗。魏國冠軍將軍安頡乘勝進攻洛陽,而洛陽竟然還沒有備足糧食。宋將杜冀守了幾日,吃光了糧食就棄城逃走了。魏軍又直攻虎牢關。虎牢關的守將尹衝向到彥之求援。到彥之派裨將王蟠龍率軍增援。但王蟠龍在七女津被魏將杜超伏擊,宋軍戰敗,王蟠龍戰死。尹衝本來就兵少,聽說援軍被擊敗,便不死守,和滎陽太守崔模一起投降了魏軍。
到彥之一看這個陣勢,便退守東平,並請朝廷速派援軍。劉義隆趕緊命徵南將軍檀道濟帶兵北上。魏國也再次增兵,派壽光侯叔孫建,汝陰公長孫道生,帶兵南下。魏國的援軍來得快,宋國的援軍來得慢。很快魏軍三支軍隊一齊向到彥之的主力攻來,到彥之再次下命令全軍撤退。將軍垣護之勸到彥之與魏軍一戰,到彥之不聽,王仲德則勸道:“現在我軍與對方還有一千多里地,滑臺也駐有重兵。這時候南逃,軍心必失,滑臺也難保。我的意思是不如先移軍到山東,與滑臺成掎角之勢,然後再看情況定奪。”到彥之於是帶兵向濟南前進,剛到了歷城,魏軍已經迅速追擊而來。這時到彥之下定決心逃跑,誰也勸不住他了。到彥之命令全軍放棄舟船,登岸南逃,一路狂奔,逃到彭城。鎮守須昌的竺靈秀看主力已經逃跑了,自己守孤城也很危險,於是也棄城南撤,退到湖陸(今山東魚臺縣東南六十里)。
只有彭城的劉義欣慨然道:“天子命我鎮守彭城,我當與城共存亡,決不南撤。”在劉義欣的榜樣下,山東守將都守城不撤,沒有出現像河南那樣的大逃亡。
魏軍進兵到濟南,太守蕭承之只有一千多士兵,實在是沒辦法守城。他乾脆把四門開啟,玩了個空城計。魏軍果然認為城中有伏兵,竟然在城外待了一天後退兵了。同時,魏軍又南攻到湖陸,竺靈秀這回跑得更徹底,連軍隊都不要了,帶了幾個親信南逃。劉義隆被這些逃跑將軍們激怒了。他下令將竺靈秀殺死,將到彥之和王仲德免職關押。任命垣護之為北高平太守,同時命令檀道濟加快行軍。
檀道濟在進兵途中受到魏將叔孫建和長孫道生的阻擊,走得很是艱難。不過,總算是一路