曹魏將領的冷嘲熱諷,終于使得司馬懿坐不住了。同年五月辛巳,司馬懿下令,以車騎將軍張郃率一部向駐扎在祁山以南營寨的蜀漢王平部發動進攻,自己則率大軍主力對諸葛亮進行決戰。可是,戰事剛剛開始,張郃的作戰便遭遇困境。遭到了蜀漢無當監王平的強烈阻擊。
王平,字子均,巴西宕渠人,漢獻帝建安二十年(公元215年)九月被任命為曹魏代理校尉。曹操同劉備爭奪漢中之時,王平隨曹軍出征,在戰斗中投降劉備,被劉備任命牙門將、裨將軍。劉備去世后,王平的能力得到了諸葛亮的關注。
諸葛亮“一出祁山”之時,王平作為諸葛亮的嫡系——參軍馬謖的先頭部隊出征,在街亭與張郃正面交鋒。僅有一千多人馬的王平臨危不懼,面對十倍于己的敵軍,王平無采用疑兵之計延緩敵軍的推進速度,使得張郃的判斷出現失誤,以為王平軍隊設有埋伏,不敢靠近。王平抓住有利時機,慢慢收集戰斗中失散的士兵,安全撤出戰場,避免了全軍覆沒的危險。戰后王平受到諸葛亮嘉獎,加封為參軍,統率五部兵馬,監管軍營事務,后又任命他為討寇將軍,封亭侯。
此時的王平不僅已經成為諸葛亮大軍中的重要將領之一,同時他手中那個還掌握著蜀漢軍隊中最為精銳的一支軍隊——無當飛軍。無當飛軍,是諸葛亮在南中時期組建的一支勁旅,士兵基本是南中地區各少數民族,不僅擅長翻山越嶺,能熟練使用弓弩能武器,同時非常精通山地作戰,對于對付騎兵也有著豐富的實戰經驗。
張郃進攻王平的戰斗打響后,立即遭到無當飛軍的強烈抵抗。張郃所部皆為曹軍精銳,但王平的無當飛軍面前沒有討得絲毫的便宜,不僅戰事毫無進展,與無當飛軍陷入膠著狀態,反倒被死死拖住,無法對司馬懿主力進行支援。
與此同時,司馬懿與諸葛亮的決戰也同時打響了。早就做好迎敵之策的諸葛亮沒有給司馬懿任何機會。兩軍剛一交戰,諸葛亮伏兵盡出,打了司馬懿一個措手不及。在魏延、吳班、高翔等人的率領下,北伐大軍奮勇爭先、氣勢如虹,很快搶得先機。司馬懿主力被北伐大軍圍攻,損失慘重,大批士兵倒在血泊之中,其余各部陷入苦戰之中。司馬懿見勢不妙,下令全軍撤退。北伐大軍一路追殺,繼續擴大戰果。
等到司馬懿好不容易擺脫北伐大軍的追擊、退回軍營清點損失時,發現陣亡士兵竟然達到三千余人,玄鎧損失五千多套,在戰場上遺失的角弩三千一百多張。不久,張郃也灰溜溜地回到了軍營。司馬懿發動的兩路進攻遭遇慘敗,諸葛亮大獲全勝。此戰過后,司馬懿只得終日堅守,再也不與諸葛亮交戰。
不過,就在北伐大軍勝利在望之際,局勢突然發生了令人意想不到的巨大變化:北伐大軍突然全線撤退了。