八月,大司馬曹休不依計劃,逕下皖城深入敵境接應詐降的吳將周魴,在石亭被陸遜伏擊,大敗,曹休病死。
關隴抗蜀
太和三年(229年),蜀相諸葛亮第三次出兵攻魏,並佔據武都(今甘肅隴南武都區)、陰平(今甘肅文縣西北)二郡。太和四年(230年),魏明帝曹叡決定興師伐蜀。升司馬懿任大將軍、加大都督、假黃鉞,與大司馬曹真一起伐蜀。八月,魏明帝命曹真率主力由長安入子午谷,左將軍張合出斜谷,司馬懿自荊州溯漢水出西城,將兵分三路會攻漢中。司馬懿從西城開拓道路,水陸並進,沿著沔水逆流而上,直達朐忍,攻克新豐縣,駐軍丹口,後遇大雨班師。
諸葛亮北伐
太和五年(231年)二月,諸葛亮率軍第四次北伐魏國,包圍祁山賈嗣、魏平部,並以木牛流馬運輸糧草,曹叡派司馬懿西駐長安防禦蜀軍。司馬懿留部將費曜、戴陵率4000人守邽,自率主力西救祁山。張合勸司馬懿分兵駐扎雍、郿兩地,以作大軍後鎮,司馬懿不同意。挺進喻麋,對戰諸葛亮。
此次戰役的結果,不同的史書有不同記載。《晉書·宣帝紀》中,司馬懿大勝蜀軍;但在《漢晉春秋》中,諸葛亮力挫魏軍。另外,這時期魏將張合之死也有不同的說法,《張合傳》中,張合不聽司馬懿勸告,主動出擊,“詔合督諸將西至略陽,(諸葛)亮還保祁山,合追至木門,與亮軍交戰,飛矢中合右膝,薨。”;而在《魏略》中卻記載是司馬懿指揮失當,“宣王使合追之,合曰:“軍法,圍城必開出路,歸軍勿追。”宣王不聽。合不得已,遂進。蜀軍乘高布伏,弓弩亂發,矢中合髀。”歷史真相究竟如何,尚不能下定論。
青龍元年(233年),安定保塞匈奴大人胡薄居姿職等叛,司馬懿派遣胡遵等追討並破降。蜀軍退軍後,軍師杜襲、督軍薛悌都預計諸葛亮第二年麥熟時還會入侵,建議趁冬天調運糧草,解決隴右糧少問題。司馬懿認為:“諸葛亮兩次出祁山,一次攻陳倉,都受挫而返。即使以後他還會出兵,將不再攻城,而是尋求野戰,地點必在隴東,而不會在西側。諸葛亮常以糧少為恨,回去後必然廣積糧草,我估計沒有三年的積蓄,諸葛亮是不會貿然出兵北伐的。”
對陣五丈原
青龍二年(234年)二月,蜀相諸葛亮率軍十萬出斜谷伐魏。四月,諸葛亮至郿縣(位於今陝西寶雞),進駐渭水之南。司馬懿率軍渡渭水,背水築壘阻擊。諸將想在渭北與諸葛亮隔水相持,司馬懿說:“百姓積聚的糧秣財物都在渭南,這是必爭之地。”遂渡渭水背水扎營。
當時,司馬懿屯兵渭南,郭淮估計諸葛亮一定會爭奪北原,主張先去佔領北原,司馬懿說:“如果諸葛亮跨過渭水登上北原,就可以連兵北山,斷絕隴道,震懾我朝臣民和胡人,此乃國家安危之大患。”
很多人不以為然,但司馬懿認為如此,讓郭淮屯兵北原。不久,諸葛亮率大軍西行,諸將都認為諸葛亮想攻西圍。郭淮則認為,諸葛亮虛張聲勢是要讓魏軍大舉回應,而他的目標是陽遂。夜裡,蜀軍果然進攻陽遂,因城中早有防備,諸葛亮沒能成功。五月,十萬吳軍攻魏,配合蜀軍作戰,被滿寵所拒。七月,魏明帝曹叡率兵親征,吳軍撤兵。
群臣認為司馬懿正還在西邊和諸葛亮重兵對峙,車駕可西幸長安,魏明帝則說:“孫權大軍已經撤回,諸葛亮孤軍無援、難成氣候,大將軍司馬懿足以抵擋,我沒有什麽憂慮了。”諸葛亮東進的道路受阻於司馬懿,從渭水前進,又有郭淮阻擋,於是移軍攻取大散關、隴城等地,回師進攻司馬懿。
與司馬懿對陣的諸葛亮
八月,司馬懿以“堅壁拒守,以逸待勞”的指示,與諸葛亮相持百余日。諸葛亮數次挑戰,司馬懿均堅壁不出,以待其變。諸葛亮便派人給司馬懿送去婦人的服裝,欲激司馬懿出戰,司馬懿仍不出戰。
為平息部屬不滿情緒,司馬懿故意裝怒,上表請戰。曹叡不許,並派骨鯁之臣辛毗[pí]杖節來做司馬懿的軍師,以節製他的行動。諸葛亮一來挑戰,司馬懿就要帶兵出擊,辛毗杖節立於軍門,司馬懿便不出兵。蜀將薑維就對諸葛亮說:“辛毗杖節而至,司馬懿不會出戰了。”諸葛亮則說:“彼本無戰情, 所以固請戰者,以示武於其眾耳。
將在軍,君命有所不受,苟能製吾,豈千裡而請戰邪!”諸葛亮遂分兵屯田,做長久屯駐之準備。司馬懿的三弟司馬孚也來信問前線軍情,司馬懿回信說:“亮志大而不見機,多謀而少決,好兵而無權,雖提卒十萬,已墮吾畫中,破之必矣。”
不久,諸葛亮遣使求戰,司馬懿不談軍事,問使者:“諸葛公起居飲食如何,一頓能吃多少米?”使者說:“三四升。”然後對問政事,使者說:“打二十軍棍以上的處罰,都是諸葛公自己閱批。”經過一番不經意的詢問,司馬懿對人說:“諸葛亮將要死了。”果然,諸葛亮於當月病故於五丈原軍中。
蜀將秘不發喪,整軍後退。當地百姓跑來報告,司馬懿派兵追擊,蜀將楊儀返旗鳴鼓,做出回擊的樣子,司馬懿以‘窮寇莫追’收軍退回。當時有人傳:“死諸葛走生仲達”,司馬懿聽到笑說:“這是因為我長於預測活人的事,不長於預測人的生死啊。”
第二天,司馬懿到諸葛亮營壘巡視,並讚諸葛亮“天下奇才也”。青龍二年(234年)八月,諸葛亮病故於五丈原(寶雞岐山境內),享年五十四歲。歷時七年的諸葛亮北伐至此結束。蜀漢將領楊儀、魏延在撤軍後爭權,楊儀殺死魏延。司馬懿想乘機攻蜀,魏明帝未準,作罷。