少時,兩軍人馬俱到達約定戰場,列陣完畢。三通鼓罷,關興催馬出陣,橫刀立馬於陣前,高聲邀戰:“吾乃漢壽亭侯關興,誰敢與我一戰?”
司馬懿問曰:“誰敢與我出戰,滅其氣焰?”魏將無人應答。
半響,文聘應曰:“末將願往。”
司馬懿曰:“文聘出戰,郭淮掠陣,不要折我軍銳氣。”
文聘拍馬出戰。關興見來人正是文聘,魏吳合力圍剿關羽時,曾燒毀羽軍糧草和戰船,關興雙目赤紅,催馬便戰,雙腿夾緊馬肚,雙手舉起青龍偃月刀,當頭砍下。文聘忙舉槍格擋。兩刃相交,偃月刀勢大力沉,文聘虎口劇痛,兵刃幾乎撒手。交馬隻一合,文聘心中已然膽怯。只剩招架之功,絕無還手之力。戰不幾合,文聘撥馬便逃。關興追去,舉刀欲砍。郭淮眼見不好,持箭射向關興。關興耳聽弓弦聲響,忙側身避過。文聘早已回陣。
漢帝大怒,率玄甲軍衝向敵陣,孔明忙催動令旗,漢軍全體向前。郭淮孟達兩部列於陣前,首當其衝。孟達麾下軍士見漢軍勇猛,陣型松動,漢帝衝之即潰。淮部精銳,尚能抵擋。
孔明見孟達所部潰逃,郭淮右翼暴露,揮動令旗,孟獲帶軍即刻向郭淮右翼包抄。郭淮所部頓時大亂。此時漢軍大部已至,亂軍向回奔逃。
司馬懿令弓弩手射殺潰兵。魏軍士氣一衰於文聘單挑失敗,二衰於孟達郭淮先後潰敗,三衰於漢朝皇帝親率先鋒衝陣。漢帝玄甲軍所到之處,猶如砍瓜切菜。
此戰皆曹魏荊豫精銳,迫於司馬懿治軍嚴整,尤在苦苦支撐。自早到晚,魏軍終於支撐不住,陣型潰散。眾將護住司馬懿逃亡宛城。士卒紛紛四處逃散,漢帝揮師追出百裡方回。王平率眾追擊,遇到陳泰所部,交馬隻一合,生擒陳泰。此戰司馬懿荊豫精銳折損殆盡。
漢軍上庸大敗司馬懿,斬首兩萬余眾,生擒萬余人,漢江水為之赤。王平抓獲魏司空陳群之子、散騎侍郎陳泰。又得信使來報,趙雲、魏延潼關擊退夏侯霸薑維,潼關固若金湯,敵軍一時不敢來犯。漢帝令魏延率兵馬兩萬,二十日後到達武關城下,與上庸兵馬東西夾擊武關。
翌日,漢帝整備軍馬,乘勝追擊,兵發宛城。大軍行至半途,留關興、馬岱二人領兵防備新野援軍。漢帝攜大軍轉而向北,到達武關城東側。司馬懿於宛城收攏殘兵,雖得兵兩萬人,然將士喪膽,坐困堅城,不敢出擊。兩日之後,魏延依約率長安兵馬兩萬至武關西側。武關僅剩五千守軍,聽聞司馬懿大敗於上庸,此時外援斷絕,東西皆敵,士氣大衰。五日後,武關守將陳騫獻關投降。