張永、沈攸之率兵進逼彭城,駐軍在下礚,分派羽林監王穆之帶兵五千人在五原守護輜重。當夜,張永進攻彭城南門,未能攻克而退回。魏國鎮東大將軍尉元到達彭城,薛安都出城迎接,尉元派李璨與薛安都先進城收取城門鑰匙,另派孔伯恭帶領精兵二千人安撫城內城外的人們,然后尉元才進城。
然而尉元進城后對薛安都卻不禮貌,薛安都后悔投降了,又計劃反叛魏國,尉元與他和善相處,因此叛亂才未能進行。于是薛安都重金賄賂尉元,把罪過都推到女婿裴祖隆身上而把他殺死了。然后尉元派遣李珠與薛安都同守彭城,自己帶兵去攻擊張永,斷絕張永的糧路,又在五原打敗王穆之,王穆之率領剩余兵士同張永會合,尉元于是進攻他們。
張永等慌忙放棄下礚城連夜逃走,遇上天下大雪,泗水河結冰,張永等只好拋棄船只步行,一時士卒凍死的人占有一大半,手腳折斷的人也有十分之七八。尉元在前攔擊,薛安都在后追擊,終于在呂梁之東大敗張永等軍,一時死者數萬,尸體堆積六十多里,丟棄的軍械物資不可計數。宋國梁、南秦二州刺史垣恭祖等人也被魏軍俘虜。張永的腳趾也凍掉了,與沈攸之僅僅單身逃回。
宋明帝劉彧聽說后,立即召見蔡興宗,拿著戰敗的信函給他看,并且說:“這件事情,面對你我來說非常慚愧。”
于是把張永降低官號為左將軍,沈攸之免除官位,以貞陽公的身份兼任原職,然后返回屯扎在淮陰,從此宋國失去淮北四州及豫州淮西地區。
尉元因為彭城在兵荒馬亂之后,公家和私人都十分貧困,請求撥給冀州、湘州、濟州、兗州的糧食,又取用張永拋棄的船只九百艘沿清水運載,來救濟剛剛歸順的百姓,魏國同意了。
宋國中領軍沈攸之自從彭城逃回時,留下長水校尉王玄載守衛下邳,積射將軍沈韶守衛宿豫,睢陵、淮陽也都留下兵力防守。王玄載是下邳人,祖父王宰做過偽北地太守,父親王蕤曾任東莞太守。王玄載最初任官是做江夏王國侍郎、太宰行參軍。泰始初任長水校尉,跟隨張永出征彭城,中央軍大敗,王玄載率領全軍據守下邳城抵抗敵虜,被任命為假冠軍將軍。
當時官軍剛失敗,上下心情恐駭,朝廷考慮到王玄載在士民中很有威望,便行文任命他為徐州刺史、持節,監徐州、豫州、梁郡軍事,寧朔將軍,平胡中郎將,不久又領山陽、東海二郡太守。泰始五年,任督青、兗二州刺史,將軍、東海郡職務仍舊。
泰始七年,又任徐州刺史,督徐、兗二州軍事,鐘離太守,將軍、郎將等仍舊,遷任左軍將軍,又被任命為寧朔將軍,歷陽太守,改任持節,都督二豫,冠軍將軍,西戎校尉,梁、秦二州刺史,后進號征虜將軍。不久又移督益、寧二州,益州刺史,建寧太守,將軍、持節仍舊。
沈攸之反叛時,王玄載率兵起義向太祖劉義隆表示忠誠,被進號為后軍將軍,封為鄂縣子。后調任散騎常侍領后軍,但他沒有上任。建寧元年,擔任左民尚書,仍舊為鄂縣子爵。趕上北虜有所動作,南兗州刺史王敬則逃回京師,皇上派王玄載領廣陵太守,加平北將軍、假節、行南兗州事,本官仍舊。事件平定后,被任命為光祿大夫、員外散騎常侍。
魏國鎮東大將軍尉元向朝廷上書說:“彭城是賊人的要塞重地,如果沒有重兵存糧就不能固守。假如物資儲備已經充足,即使劉彧的軍隊全部出動,也不能窺視淮河以北地區。如果賊人向彭城進軍,必定經由清水、泗水路過宿豫、經過下邳。假如他們要向青州進軍,亦要經由下邳、沂水路過東安,這幾個城鎮都是敵人用兵的要塞之處。現在如果先平定下邳、宿豫,鎮守淮陽、東安,則青州、冀州各城可以不用攻擊而能獲勝,如果下邳等四城不先平定,則青州、冀州雖然攻下,但當地百姓還是要顧望江南心懷僥幸心理。臣愚認為,應暫時放開進攻青州、冀州的軍隊,先平定東南的下邳等城,斷絕劉彧北顧之心和愚民南望的心思。夏天水勢很大,但宋軍無有渡口和道路可走,冬天道路雖然暢通,但宋軍前來無高城可守,這樣做,則可使淮北地區自然歸順,暫時辛勞而永遠安逸。兵貴神速,時間拖太久了就會發生變異,如果雨季到了之后,賊人或許可利用水路暢通,向這一地區運糧送兵圖謀進取,到那時候,恐怕淮河附近的百姓就要翻然改悔不再歸順了,而青州、冀州地區也不可很快攻克。”
這一日,沈攸之親自運糧到下邳,魏國派清水、泗水流域的人來欺騙沈攸之說:“薛安都打算投降,請求宋軍前來接應。”
宋國軍副吳喜請求派遣一千人前去接應,沈攸之不允許,后來傳信的人更多,吳喜堅持請求不止,沈攸之就召集來的人告訴他們說:“你們既有誠心,假如能和薛徐州的子弟一起來,我就全部任命你們為本鄉本縣的官長,任你們的心意挑選,如果不能一起來,就不要白白辛勞往返了。”
從此這些人就一去不返,于是沈攸之讓軍主彭城人陳顯達率領一千人協助守衛下邳,然后自己返回。薛安都的兒子薛令伯逃亡到梁州、雍州一代,聚集有幾千人攻陷郡縣,于是雍州刺史巴陵人劉休若派遣南陽太守張敬兒等攻擊殺死了薛令伯。
后來宋明帝劉彧又派中領軍沈攸之等進攻彭城,沈攸之以為清水、泗水正干涸無水,糧食運輸跟不上,所以不能前進。使者往返七八次,宋明帝發怒了,強行派遣沈攸之出軍攻擊,任命沈攸之為行南兗州刺史率兵北上,讓行徐州事蕭道成率領一千人鎮守淮陰,蕭道成借此收養豪杰人士,因此門下賓客開始增多。
魏國鎮東大將軍尉元派遣孔伯恭率領步騎兵一萬人抵抗沈攸之,把沈攸之上次戰敗時的俘虜,又凍掉腳腿只能膝行的士卒全部交還給沈攸之,用以減輕宋軍的士氣。宋明帝不久就后悔派沈攸之等人北攻彭城,又召回他們。
沈攸之到達焦墟離下邳五十多里,陳顯達引兵迎接沈攸之到達睢清口,孔伯恭攻打他們,沈攸之帶兵后退,孔伯恭一路追擊他,因此沈攸之打敗,龍驤將軍姜彥之等戰死,沈攸之受了重傷,逃進陳顯達的營寨。到了夜里宋軍潰散,沈攸之于是輕裝騎馬南逃,丟棄軍械物資無數,返回屯駐在淮陰。
尉元寫信勸說徐州刺史王玄載放棄下邳逃走,魏國于是任命隴西人卒紹先為下邳太守。卒紹先不崇尚苛刻的統治,只掌握大體的要領,教導百姓進行生產防御賊盜而已,由此下邳平安穩定。孔伯恭進攻宿豫,宿豫守將魯僧遵也放棄城池逃跑了。于是魏國將軍孔大等率領一千騎兵向南進攻淮陽,淮陽太守崔武仲也燒毀城池逃走。
魏軍進入彭城時,垣崇祖率領私人部隊逃奔朐山,并占據了朐山,派遣使者前來投降,于是蕭道成任命他為朐山戍主。朐山瀕臨大海十分荒涼,人心極不安定,垣崇祖在水邊泊著船只,計劃情況緊急時就逃到海山。
魏國東徐州刺史成固公戍守于圂城,垣崇祖的部下將領有罪,逃亡投降了魏軍,于是成固公派步騎兵二萬人襲擊朐山。離城二十里,垣崇祖正出城送客,城中的人驚慌騷亂,都下山上船準備逃走,垣崇祖送客回城,他對心腹說:“敵軍這不是事先有準備的進攻,只是聽了叛逃者的話才來的,很容易就能欺騙他們。現在能有一百多人回城,事情必定能夠成功。只是人心一經驚嚇,就不可再召集回來,你們可快去一里之外的地方,奔跑著大叫說:‘艾塘的義軍已經打敗魏軍,等待守軍快回去,協助趕跑魏軍。’”
船上的人聽了非常高興,急先上岸,垣崇祖帶領他們進城,于是占領朐山城。又派遣弱小人員進入海島,一人持兩支火把,登山吶喊,魏國偵察騎兵還以為朐山軍備很嚴,因此全部退軍,于是宋明帝劉彧任命垣崇祖為北瑯邪、蘭陵二郡太守。
垣榮祖也從彭城逃到朐山,因為奉命勸說薛安都歸順不成功,畏罪不敢出來,因此前往淮陰投奔蕭道成。垣榮祖少年時學習騎射,有人對他說:“武士可怕,最好學文。”
垣榮祖說:從前曹操父子上馬橫矛沖殺,下馬談詠詩文,這種本事在當今天下,可以足夠養家糊口。你們這種人沒有保全自己的技能,將來與狗羊有什么差別呢?”
劉善明的堂弟劉僧副帶領私人部隊二千人,躲避在魏軍居住的海島上,蕭道成都召集和安撫他們。當初東平太守申纂守衛無鹽,幽州刺史劉休賓守衛梁州,并州刺史清河人房崇吉守衛升城,輔國將軍清河人張讜守衛團城,以及兗州刺史王整、蘭陵太守桓忻,包括肥城、麋溝、垣苗等據點都不向魏國投降,劉休賓是劉乘民哥哥的兒子。
尉元又派使者游說宋國東徐州刺史張讜,張讜獻出團城投降魏國,于是魏國任命中書侍郎高閭與張讜同為東徐州刺史,李璨同畢眾敬同為東兗州刺史。尉元又勸說宋國兗州刺史王整、蘭陵太守桓忻,王整、桓忻都投降了魏國。
于是魏國任命尉元擔任開府儀同三司、都督徐、南兗、北兗三州諸軍事、徐州刺史,鎮守彭城。召薛安都、畢眾敬前來平城朝見魏國君主。到達平城后,魏王拓跋弘用上等客人的禮節接待他們,跟隨的人們都封侯,并賜給宅院,待遇十分優厚。