在成功抵禦曹軍的大舉入侵後,諸葛亮於蜀漢建興九年(公元231年)二月發動了第四次北伐之戰,除了魏延、高翔、吳班、王平等蜀漢精銳悉數參戰之外,又派李嚴、馬忠等人負責大軍的糧草供應。北伐大軍聲勢浩大,沿著與第一次北伐幾乎相同的路線進入了曹魏西北地區。
在這場仗開打期間,曹魏西北地區出現重大人事變更,大司馬曹真病逝,原本負責東南戰線的大將軍司馬懿奉命調往西北指揮戰事,這也是司馬懿與諸葛亮之間的第一次較量。
曹魏大軍在此次作戰過程的表現非常蹊蹺。從戰事開始的那一刻起,左將軍張郃的意見便與司馬懿南轅北轍。儘管司馬懿堅持己見,但從增援祁山堡、東撤上邽這一系列部署中發現,他始終落後諸葛亮一步,被牽著鼻子走。
等到諸葛亮再度放棄圍攻上邽,率部回撤至西縣時,司馬懿被徹底迷惑,弄不清諸葛亮的真實意圖,雖尾隨其後,卻不但貿然發動攻勢,只好固守營壘,閉門不戰,這也是為什麼他會被西北重將嗤之為畏敵如虎的原因。
作為三國後期罕見的軍事天才,司馬懿在與諸葛亮的首次交鋒中顯然還沒摸清楚其作戰特點和風格,他採用的是最為穩妥的辦法。不過,以張郃為首的曹魏眾將卻認為這是司馬懿畏敵的表現,並多次公開表達不滿,最終迫使司馬懿放棄了自己的立場,屈從眾將意見,下令張郃率部進攻王平,自己則與諸葛亮展開決戰,諸葛亮的目的終於達到了。
接下來同時進行了祁山與西城的戰事,諸葛亮大軍均取得了勝利。蜀漢精銳——無當飛軍擋住了張郃的瘋狂進攻,張郃不但無法策應司馬懿,反而被死死拖住。而諸葛亮與司馬懿的較量又以前者的完勝而結束。曹軍陣亡士兵達三千餘人,玄鎧損失五千多套,在戰場上遺失的角弩三千一百多張。
不過,後來發生的事情非常奇怪。蜀漢大軍突然後撤,司馬懿一反常態下令追擊,結果又遭到張郃的反對。這一回司馬懿不但態度強硬,還命令由張郃率部追擊。最終的結果是張郃在木門地區遭到諸葛亮伏擊,這位常年征戰西北、令劉備和諸葛亮都非常忌憚的曹魏著名將領殞命沙場。
從司馬懿與諸葛亮的這次交鋒來看,司馬懿的戰術非常謹慎,卻在諸葛亮回撤時貿然下令追擊,令人非常疑惑其真正動機。究竟是司馬懿經驗不足、還是借諸葛亮之手除掉張郃以達到自己完全掌控西北曹軍的目的,這也成了一個爭議不斷的話題。