率水军至黄河，另遣段宏率八千精骑攻虎牢。到彦之军一日只行军约十里，到七月才到须昌（今山东东平县西北），其时北魏以碻磝（今山东荏平西南）、滑台、虎牢、及洛阳四镇兵少，先后让守将弃城北退，宋军遂轻易夺回四镇。然而到十月，北魏反攻，魏将安颉进攻洛阳金镛城，守将杜骥因城池残破且无粮食而弃守南撤；另一方面虎牢亦失陷。接着，魏将叔孙建及长孙道生等于十一月渡过黄河，到彦之见诸军相继败阵，不理垣护之支援青州的谏言，南退至历城（今山东济南历城区）后就烧船率军直奔彭城，守须昌的竺灵秀于是也退，更在湖陆大败给叔孙建。魏军亦进攻滑