魏明帝太和二年戊申,公元228年,诸葛亮将要攻打魏,税下人商量这次军事,行动。丞相司马魏延说:“听说夏侯是魏帝的女婿,此人胆却而没有智谋。现请给我五千人的精锐部队,带着五千人口粮,直接从褒中出发,沿着秦岭向东,到子午道后折向北方,用不了十天功夫,可以抵达长安。夏侯听到我突然来到,一定弃城逃走。长安城中就只有御史、京兆太守了。横门粮仓的存粮以及百姓逃散剩下的粮食,足以供给军粮。等到魏国在东方集结起军队,还要二十多天时间,而您从斜谷出来接应,也完全可以到达。这样,就可以一举而平定咸阳以西的地区了。”诸葛亮认为这是危而不妥的计策,不如安全地从平坦的路上出去,可以稳稳当当地取得陇右地区,有百分之百的把握取胜而不会有失,所以不用魏延之计。子午谷之谋有利有弊,以诸葛谨慎的性格是断不会采用的
诸葛亮扬言从斜谷取城,命令镇东将军赵云、扬武将军邓芝充当疑兵,据守箕谷明帝派遣曹真都督关右地区各军驻扎在城。诸葛亮亲自统率大军进攻祁山,军阵整齐,号令严明。起初,魏认为蜀汉昭烈亮刘备已经去世,几年来没有什么动静,因此放松了防备而突然听到诸葛亮出兵,朝廷和民众都很惧怕。于是,天水、南安、安定等郡都背叛魏而响应诸葛亮,关中如雷轰顶,受到震动,朝廷大臣不知不什么对策,明帝说:“诸葛亮本来依据山险固守,现在亲自前来,正合乎兵书所说招敌前来的策略,一定能够打败诸葛亮。”于是统领步兵和骑兵五万大军,命右将军张监管军务,向西抵御诸葛亮。丁未疑误,明帝到达长安。
起初,越太守马谡,才气和抱负超过常人,喜好议论军事谋略,诸葛亮对他深为器重昭烈帝刘备临终之时对诸葛亮说:“马谡言语浮夸,超过实际才能,不可委任大事,您要对他多加考察。”诸葛亮还认为不是这样,让马谡做参军,时常接见一起谈论,从白天直到黑夜。等到出兵祁山,诸葛亮不用旧将魏延、吴懿等为先锋,而是让马谡统领各军在前,同张颌在街亭交战。
马谡违背诸葛亮的指挥调度,军事行动混乱无章,放弃水源上山驻扎,不在山下据守城邑。张断绝马谡取水的道路,发动进攻并大败马谡,蜀军溃散。诸葛亮前进没有据点,就攻取西县一千多人家回到汉中。把马谡关进监狱,杀了他。诸葛亮亲自吊丧,为他痛哭流涕,安抚他的子女,如同平素一样恩待他们。蒋琬对诸葛亮说:“古时候晋国同楚国交战楚国杀了领兵的得臣,晋文公喜形于色。现在天下没有平定,而杀了智谋之士,难道不惋惜吗?”诸葛亮流着眼泪说:“孙武能够制敌而取胜于天下的原因,是用法严明所以晋悼公的弟弟扬干犯法,魏绛就杀了为他驾车的人。现在天下分裂,交战刚刚开始,如果又废弃军法,怎么能够讨伐敌人呢?”
马谡没有失败时,裨将军巴西人王平一再规劝马谡,马谡不采纳等到失败,部众四散,只有王平率领的一千人擂响战鼓,把守营地,张怀疑有伏兵不敢往前逼近,于是王平缓缓地收扰各部散余的士兵,率领人马返回。诸葛亮既杀了马谡和将军李盛,还夺了将军黄袭等的兵权,王平的名声地位就特别提高和显示出来,又提拔他为参军,统伶部兵马和营屯之事,官位晋升到讨寇将军,封为亭侯。诸葛亮上书请求自己贬降三级,汉后主任命诸葛亮为右将军,兼理丞相的职务。
这时赵云、邓芝的部队也在箕谷战败,赵云收敛部队坚守,所以损失不大,但也因此被贬为镇军将军。诸葛亮问邓芝道:“街亭失利,大军败退,兵将不再可收拾,箕谷战败部队撤退,兵将依然齐整如初,是什么原因呢?”邓芝说:“赵云亲自在部队后面拒敌,军需物资,一点都没有抛弃,兵将没有什么缘由可以散乱。”赵云有军资和剩余的绢帛,诸葛亮让用来分给将士,赵云说:“军事上没有胜利,为什么要有赏赐,这些物资请全部存入赤岸库,等到十月用作冬季犒劳品。”诸葛亮很赞同这个意见。赵云并非长胜将军,这是他在正史中为数不多的出场机会。
有人劝说诸葛亮再次发兵,诸葛亮说:“大军在祁山、箕谷的时候,都多于敌军,但没有打败敌人,反而被敌人打败,问题不在于兵少,而在于将领。现在我打算减少兵将,显明责罚,反思过失,将来另想变通的办法。如果不能这样,即使兵多也没有什么用处!从今以后,凡是一心为国家分忧效忠的人,只要多多批评我的过错,那么大事就可以安定,敌人就可以打垮,大功就可跷足而待了。”于是考察有功将士,连微小的功劳也不遗漏,对壮烈之士,一一加以甄别,引过自责,把自己的过失在境内公开宣布,练兵讲武,准备将来进取。将士精简干练,民众忘记既往的兵败了。这边正史上压根没空城计一说,司马懿也不会分身在这出现
诸葛亮出兵祁山的时候,天水参军姜维向诸葛亮归降。诸葛奶赞赏姜维的胆识,任用他做仓曹掾,掌管军事。
曹真讨伐安定等三个郡,都已平定。曹真认为诸葛亮以祁山之败为戒,以后一定从陈仓兵,于是让将军郝昭等驻守陈仓,修建城池。
夏季,四月,丁酉初八,魏明帝返回洛阳。