魏太和二年(公元228年)春,诸葛亮将要攻打魏国,和部下众人商量这次军事行动。丞相司马魏延主动请命道:“请给我五千人的精锐部队,带着五千人口粮,直接从褒中出发,沿着秦岭向东,到子午道后折向北方,用不了十天工夫,可以抵达长安。”
司马魏延说:“听说夏侯楙是魏帝的女婿,此人胆怯而没有智谋,听说我突然来到,一定会弃城逃走。长安城中就只有御史、京兆太守了。横门粮仓的存粮以及百姓逃散剩下的粮食,足以供给军粮。等到魏国在东方集结起军队,还要二十多天时间,而您从斜谷出来接应,也完全可以到达。这样,就可以一举而平定咸阳以西的地区了。”诸葛亮认为这是危险不妥的计策,不如安全地从平坦的路上出去,可以稳稳当当地取得陇右地区,有百分之百的把握取胜而不会有失,所以不用魏延之计。
诸葛亮扬言从斜谷道攻取城,命令镇东将军赵云、扬武将军邓芝充当疑兵,据守箕谷。魏明帝派遣曹真都督关右地区各军驻扎在城。诸葛亮亲自统率大军进攻祁山,军阵整齐,号令严明。于是,天水、南安、安定等郡都背叛魏国而响应诸葛亮,关中地区如雷轰顶,受到震动。魏明帝发兵步兵骑兵五万,派右将军张郃监军事务,向西进军抗击诸葛亮。
曾任太守的马谡才干过人,喜欢谈论兵法,诸葛亮十分赏识器重他。刘备临终前对诸葛亮说:“马谡言过其实,不能重用,你可要多加考虑!”诸葛亮不以为然,任命马谡为参军,经常召见马谡,从白天直谈到夜晚。等到出兵祁山,诸葛亮不派旧将魏延、吴懿为先锋,而命马谡统帅各军在前,和张郃在街亭交战。马谡违反诸葛亮的指挥调度,军政措施冗繁,放弃有水之地上山驻扎,而不在山下据守城池。张郃断绝马谡的取水通道,率兵出击,大败马谡。诸葛亮进攻却没有地方驻军,就仅攻取了西县一千多家百姓回到汉中。继而收捕马谡入狱,斩了他。诸葛亮亲自为他吊丧,痛哭流涕;抚养他的子女,与往常一样恩待他们。长史蒋琬对诸葛亮说:“当初楚国杀了得臣,晋文公喜形于色。现在天下没有平定却杀死智谋之士,难道不惋惜吗?”诸葛亮哭泣道:“孙武所以能在天下克敌制胜,是执法严明,因而扬干犯法,魏绛就杀了他的仆人。如今四海分裂,战争才刚刚开始,若破坏法令,用什么来讨伐敌贼呢?”
马谡没有战败时,裨将军巴西人王平多次规劝马谡,马谡没能听从。等到战败,部队全部逃散,只有王平所率的一千人还擂着战鼓在防守,张郃怀疑王平有伏兵,不敢进逼,因此王平渐渐聚拢各营残兵,率将士返回。诸葛亮杀了马谡和将军李盛后,剥夺了将军黄袭等的兵权,惟有王平格外受到重用,加封他为参军,统领五部军队兼管安营扎寨的事务,晋升为讨寇将军,封为亭侯。诸葛亮上奏请求将自己降职三级,汉主刘禅封诸葛亮为右将军,代理丞相事务。