北魏主拓跋嗣向西巡视到云中,于是渡过黄河,在大漠打猎。
北魏设置天地四方六部大人,由各位公爵担任。
秋天七月,太尉刘裕抵达陕城。沈田子、傅弘之进入武关,后秦守将都弃城逃走。沈田子等人进驻青泥,后秦主姚泓派给事黄门侍郎姚和都驻守峣柳抵抗。西秦相国翟勍去世;八月,任命尚书令昙达为左丞相,右仆射元基为右丞相,御史大夫黮景为尚书令,侍中翟绍为左仆射。
太尉刘裕抵达闅乡,沈田子等人准备攻打峣柳。后秦主姚泓想亲自率军抵御刘裕,又怕沈田子等人袭击后方,想先消灭沈田子等人,再倾全国兵力东出;于是率领几万步兵骑兵,突然抵达青泥。沈田子本是疑兵,只有一千多人,听说姚泓到来,想出击;傅弘之认为寡不敌众,加以阻止,沈田子说:“用兵贵在出奇,不必在乎人多。况且现在众寡悬殊,势不两立,若对方形成稳固包围,我们就无处可逃了。不如趁他们刚到,营阵未立,主动攻击,或许能成功。”于是率领部下率先进攻,傅弘之随后跟进。后秦兵形成几层包围。沈田子安抚士兵说:“各位冒险远来,正是为了今天的战斗,生死在此一举,封侯的功业就在眼前!”士兵们都踊跃呐喊,手持短兵器奋勇出击,后秦兵大败,被斩杀一万多人,还缴获了姚泓的车驾和服饰器物,姚泓逃回灞上。
起初,刘裕因沈田子等人兵力少,派沈林子领兵从秦岭前去援助,赶到时后秦兵已战败,于是一起追击,关中各郡县大多暗中向沈田子表示归附。
辛丑日,太尉刘裕抵达潼关,任命朱超石为河东太守,让他和振武将军徐猗之在黄河以北与薛帛会合,共同攻打蒲阪。后秦平原公姚璞与姚和都一起迎击,徐猗之战败身亡,朱超石逃回潼关。东平公姚赞派司马国璠带领北魏兵追击刘裕后方。
王镇恶请求率领水军从黄河进入渭水直奔长安,刘裕同意。后秦恢武将军姚难从香城领兵西撤,王镇恶追击;后秦主姚泓从灞上领兵返回驻守石桥作为支援,镇北将军姚强与姚难合兵驻守泾水岸边抵抗王镇恶。王镇恶派毛德祖进攻,打败他们,姚强战死,姚难逃回长安。
东平公姚赞退守郑城,太尉刘裕进军逼近。姚泓派姚丕驻守渭桥,胡翼度驻守石积,东平公姚赞驻守灞东,姚泓自己驻守逍遥园。
王镇恶沿渭水逆流而上,乘坐蒙冲小舰,划船的人都在舰内;后秦人见舰只前进却不见划船的人,都惊为神助。壬戌日清晨,王镇恶抵达渭桥,命令士兵吃完饭,都持兵器登岸,后登岸的斩首。士兵们登岸后,渭水水流湍急,舰只都顺流而下,转眼就不见踪影。当时姚泓率领的士兵还有几万人。王镇恶告诉士兵们:“我们都家在江南,这里是长安北门,离家万里,船舰、衣物粮食都已顺流而去。现在进军作战取胜,就能功成名就;不胜,就会尸骨无存,没有别的出路。大家努力吧!”于是身先士卒,士兵们奋勇争先,在渭桥大败姚丕。姚泓领兵救援,被姚丕的败兵冲击践踏,不战而溃。姚谌等人都战死,姚泓单人匹马回宫。王镇恶从平朔门进入长安,姚泓与姚裕等几百骑兵逃奔石桥。东平公姚赞听说姚泓战败,领兵赶来,部下却都溃散了。胡翼度向太尉刘裕投降。
姚泓准备出城投降,他的儿子姚佛念才十一岁,对姚泓说:“晋人会肆意满足他们的欲望,我们即使投降也一定免不了一死,不如自尽。”姚泓怅然若失,没有回应。姚佛念爬上宫墙,纵身跳下摔死了。癸亥日,姚泓带着妻子儿女、文武大臣到王镇恶的营垒门前请求投降,王镇恶把他们交给了属吏。长安城里有夷人、晋人六万多户,王镇恶以朝廷的恩德进行安抚,号令严明,百姓生活安定。
九月,太尉刘裕抵达长安,王镇恶在灞上迎接。刘裕慰劳他说:“成就我霸业的,是你啊!”