曹叡對他的看法深以為然,再次命司馬懿屯兵宛城備戰。
八月,大司馬曹休不依計劃,逕下皖城深入敵境接應詐降的吳將周魴,
在石亭被陸遜伏擊,大敗,曹休病死。
太和三年(229年),蜀相諸葛亮第三次出兵攻魏,
並占據武都(今甘肅省隴南市武都區)、陰平(今甘肅省文縣)二郡。
太和四年(230年),魏明帝曹叡決定興師伐蜀。
升司馬懿任大將軍、加大都督、假黃鉞,與大司馬曹真一起伐蜀。
八月,魏明帝命曹真率主力由長安入子午穀,左將軍張合出斜穀,
司馬懿自荊州溯漢水出西城,將兵分三路會攻漢中。
司馬懿從西城開拓道路,水陸並進,沿著沔水逆流而上,
直達朐忍,攻克新豐縣,駐軍丹口,後遇大雨班師。
太和五年(231年)二月,諸葛亮率軍第四次北伐魏國,
包圍祁山賈嗣、魏平部,並以木牛流馬運輸糧草,曹叡派司馬懿西駐長安防禦蜀軍。
司馬懿留部將費曜、戴陵率4000人守邽,自率主力西救祁山。
張合勸司馬懿分兵駐紮雍、郿兩地,以作大軍後鎮,司馬懿不同意。
進軍隃麋。後來,雙方爆發了鹵城之戰。
此次戰役的結果,不同的史書有不同記載。
在《晉書·宣帝紀》中,司馬懿大勝蜀軍;但在《漢晉春秋》中,諸葛亮力挫魏軍。
另外,在《三國誌·張合傳》中,沒有司馬懿督張合,
也沒有寫出張合追擊的原因,“詔合督諸將西至略陽,亮還保祁山,合追至木門,
與亮軍交戰,飛矢中合右膝,薨。”;
而在《魏略》中則記載是司馬懿不聽張合的勸阻,
強行命令張合追擊,“宣王(司馬懿)使合追之,
合曰:“軍法,圍城必開出路,歸軍勿追。”宣王不聽。
合不得已,遂進。
蜀軍乘高布伏,弓弩亂發,矢中合髀。”曆史真相究竟如何,尚不能下定論。
青龍元年(233年),安定保塞匈奴大人胡薄居姿職等叛,
司馬懿派遣胡遵等追討並破降。蜀軍退軍後,軍師杜襲、
督軍薛悌都預計諸葛亮第二年麥熟時還會入侵,建議趁冬天調運糧草,
解決隴右糧少問題。司馬懿認為:“諸葛亮兩次出祁山,一次攻陳倉,都受挫而返。
即使以後他還會出兵,將不再攻城,而是尋求野戰,地點必在隴東,而不會在西側。