太和二年(228年)五月,吴鄱阳太守周鲂派人送亲笔信给曹休,谎称受到吴王责难,打算弃吴降魏,请求派兵接应。曹休未辨真伪,即率步、骑兵10万人,去皖城(今安徽潜山)接应。明帝也(治晋阳,今太原西南)命司马懿率军向江陵(今湖北江陵),与曹休相策应。八月,曹休为吴军大败,残部幸得贾逵接应,方得生还。
太和三年(227年),蜀丞相诸葛亮第三次出兵攻魏,并占据武都、阴平二郡。太和四年(230年),魏明帝决定兴师伐蜀。升司马懿任大将军、加大都督、假黄钺,与大司马曹真一起伐蜀。
八月,魏明帝命曹真率主力由长安入子午谷,左将军张郃出斜谷,司马懿自荆州溯汉水出西城(今陕西安康西北),将兵分三路会攻汉中。司马懿从西城开拓道路,水陆并进,沿着沔水逆流而上,直达朐腮,攻克新丰县,驻军丹口,后遇雨班师。
太和五年(231年),二月,蜀汉丞相诸葛亮率军第四出进攻魏,包围祁山(今甘肃东南部山地)贾嗣、魏平部,并以木牛流马运输粮草。明帝对司马懿说:“西方有事,非君莫可付者”(《晋书·宣帝纪》),派他西驻长安,都督左将军张郃、雍州刺史郭淮等防御蜀军。司马懿留部将费曜、戴陵率4000人守邽(今甘肃天水),自率主力西救祁山。张郃劝司马懿分兵驻扎雍、郿两地,以作大军后镇。司马懿不同意,他说:“料前军独能当之者,将军言是也。若不能当,而分为前后,此楚之三军所以为黥布禽也。”于是挺进喻麋。
诸葛亮闻魏大军将至,亦分兵一部继攻祁山,自率主力迎击司马懿。郭淮及费曜等部袭击蜀军,被诸葛亮击破。便亲率蜀军乘势抢先收割熟麦,获得军粮。
至此,史书上对今后的作战却有了两种截然不同的记载。
《晋书·宣帝纪》记载如下:……亮闻大军且至,乃自帅众将芟上邽之麦。诸将皆惧,帝曰:“吾倍道疲劳,此晓兵者之所贪也。亮不敢据渭水,此易与耳。”进次汉阳,与亮相遇,帝列阵以待之。使将牛金轻骑饵之,兵才接而亮退,追至祁山。亮屯卤城(今甘肃天水南),据南北二山,断水为重围。帝攻拔其围,亮宵遁。追击,破之,俘斩万计。
《资治通鉴·卷第七十二》记载如下:……郭淮、费曜等徼亮,亮破之,因大芟刈其麦,与懿遇于上邽之东。懿敛军依险,兵不得交,亮引还。懿等寻亮后至于卤城。张郃曰:“彼远来逆我,请战不得,谓我利不在战,欲以长计制之也。且祁山知大军已在近,人情自固,可止屯于此,分为奇兵,示出其后,不宜进前而不敢逼,坐失民望也。今亮孤军食少,亦行去矣。”懿不从,故寻亮。既至,又登山掘营,不肯战。贾诩、魏平数请战,因曰:“公畏蜀如虎,奈天下笑何!”懿病之。诸将咸请战。夏,五月,辛已,懿乃使张郃攻无当监何平于南围,自案中道向亮。亮使魏延、高翔、吴班逆战,魏兵大败,汉人获甲着三千,懿还保营。六月,亮以粮尽退军,司马懿遣张郃追之。郃进至木门(今甘肃天水西南),与亮战,蜀人乘高布伏,弓弩乱发,飞矢中郃右膝而卒。
可以看出,前者说司马懿大胜,后者则说司马懿大败。而《三国志》中诸葛亮、张郃、郭淮等人的传记中,对此都一带而过。而且前者对司马懿让张郃去追击蜀之避而不谈。相对而言,还是后者可信度高些。现在的军事工具书也都以后者记载为准。
蜀军退军后,军师杜袭、督军薛悌都估计诸葛亮明年麦熟时还会入侵,建议趁冬天调运粮草,解决陇右粮少问题。司马懿认为:“亮再出祁山,一攻陈仓,挫衄而反。纵其后出,不复攻城,当求野战,必在陇东,不在西也。亮每以粮少为恨,归必积谷,以吾料之,非三稔不能动矣”(《晋书·宣帝纪》)。
青龙二年(234年)二月,蜀丞相诸葛亮率军10万出斜谷攻魏,四月,诸葛亮至郿县(今陕西眉县北),进驻渭水之南。魏大将军司马懿率军渡渭水,背水筑垒阻击。诸将想在渭北与诸葛亮隔水相持,司马懿说:“百姓积聚皆在渭南,此必争之地也”(《晋书·宣帝纪》)。遂渡渭背水扎营。司马懿分析形势后,对诸将说:“亮若勇者,当出武功依山而东,若西上五丈原(今陕西眉县西南),则诸军无事矣”(《晋书·宣帝纪》)。
诸葛亮果然上五丈原。魏诸将皆喜,唯独雍州刺史郭淮深以为忧,他说:“亮必争北原,宜先据之”(《资治通鉴·卷第七十二》),诸将多不以为然。郭淮说:“若亮跨渭登原,连兵北山,隔绝陇道,摇荡民、夷,此非国之利也”(《三国志·魏书·郭淮传》)。司马懿这才意识到北原的重要性,命郭淮等率兵移屯北原。堑垒尚未成,蜀军果至,攻而未克,两军遂成对峙状态。
五月,吴军10万三路攻魏,以配合蜀军作战。魏明帝派秦郎率2万人援司马懿,自率主力反攻吴军。七月,吴军撤走。
诸葛亮东进的道路受阻于司马懿,从渭水前进,又有郭淮阻挡,乃移军攻取散关,陇城等地,然后回师进攻司马懿。
八月,司马懿遵照明帝“坚壁拒守,以逸待劳”的指示,与诸葛亮相持百余日。诸葛亮数次挑战,司马懿均坚壁不出,欲待蜀军粮尽,相机反攻。诸葛亮便派人给司马懿送来“巾帼妇人之饰”(《晋书·宣帝纪》)羞辱之,欲激司马懿出战,