诸葛亮平定南中之后,经过两年准备,公元227年冬天,就带领大军驻守汉中。汉中接近魏、蜀的边界,可以随时找机会进攻魏国。离开成都的时候,他给后主刘禅上了一道奏章,要后主不要满足现状,妄自菲薄;要亲近贤臣,疏远小人;并且表示他决心担负起兴复汉朝的责任。这道奏章就是历史上有名的《出师表》。诸葛亮到了祁山,决定派出一支人马去占领街亭(今甘肃庄浪东南),作为据点。当时他身边还有几个身经百战的老将。可是他都没有用,单单看中参军马谡。
过了年,诸葛亮采用声东击西的办法,传出消息,要攻打郿城(今陕西眉县),并且派大将赵云带领一支人马,进驻箕谷(今陕西褒城北),装出要攻打郿城的样子。魏军得到情报,果然把主要兵力去守郿城。诸葛亮趁魏军不防备,亲自率领大军,突然从西路扑向祁山(今甘肃礼县东)。
蜀军经过诸葛亮几年严格训练,阵容整齐,号令严明,士气十分旺盛。自从刘备死后,蜀汉多年没有动静,魏国毫无防备,这次蜀军突然袭击祁山,守在祁山的魏军抵挡不了,纷纷败退。蜀军乘胜进军,祁山北面天水、南安、安定三个郡的守将都背叛魏国,派人向诸葛亮求降。那时候,魏文帝曹丕已经病死。魏国朝廷文武官员听到蜀汉大举进攻,都惊慌失措。刚刚即位的魏明帝曹睿(ruì)比较镇静,立刻派张郃带领五万人马赶到祁山去抵抗,还亲自到长安去督战。
马谡这个人确是读了不少兵书,平时很喜欢谈论军事。诸葛亮找他商量起打仗的事来,他就谈个没完,也出过一些好主意。因此诸葛亮很信任他。但是刘备在世的时候,却看出马谡不大踏实。他在生前特地叮嘱诸葛亮,说:“马谡这个人言过其实,不能派他干大事,还得好好考察一下。”但是诸葛亮没有把这番话放在心上。这一回,他派马谡当先锋,王平做副将。
马谡和王平带领人马到了街亭,张郃的魏军也正从东面开过来。马谡看了地形,对王平说:“这一带地形险要,街亭(今天水市秦安县陇城镇)旁边有座山,正好在山上扎营,布置埋伏。”
王平提醒他说:“丞相临走的时候嘱咐过,要坚守城池,稳扎营垒。在山上扎营太冒险。”
马谡没有打仗的经验,自以为熟读兵书,根本不听王平的劝告,坚持要在山上扎营。王平一再劝马谡没有用,只好央求马谡拨给他一千人马,让他在山下临近的地方驻扎。
张郃率领魏军赶到街亭,看到马谡放弃现成的城池不守,却把人马驻扎在山上,马上吩咐手下将士,在山下筑好营垒,把马谡扎营的那座山围困起来。
马谡几次命令兵士冲下山去,但是由于张郃坚守住营垒,蜀军没法攻破,反而被魏军乱箭射死了不少人。
蜀军在山上断了水,连饭都做不成,时间一长,自己先乱了起来。张郃看准时机,发起总攻。蜀军兵士纷纷逃散,马谡要禁也禁不了,最后,只好自己杀出重围,往西逃跑。
王平带领一千人马,稳守营盘。他得知马谡失败,就叫兵士拼命打鼓,装出进攻的样子。张郃怀疑蜀军有埋伏,不敢逼近他们。王平整理好队伍,向后撤退,不但一千人马一个也没损失,还收容了不少马谡手下的散兵。
蜀军失去了重要的据点,又丧失了不少人马。诸葛亮为了避免遭受更大损失,决定把人马全部撤退到汉中。
诸葛亮回到汉中,经过详细查问,知道街亭失守完全是由于马谡违反了他的作战部署。马谡也承认了他的过错。诸葛亮按照军法,把马谡下了监狱,定了死罪。
马谡自己知道免不了一死,在监狱里给诸葛亮写了封信,说:“丞相平日待我像待自己的儿子一样,我也把丞相当作自己父亲。这次我犯了死罪,希望我死以后,丞相能够像舜杀了鲧还用禹一样,对待我的儿子,我死了也没牵挂了。”
诸葛亮杀了马谡,想起他和马谡平时的情谊,心里十分难过,流下了眼泪。以后,他真的把马谡的儿子照顾得很好。
诸葛亮认为王平在街亭曾经劝阻过马谡,在退兵的时候,又用计保全了人马,立了功,应该受奖励,就把王平提拔为参军,让他统率五部兵马。
诸葛亮对将士们说:“这次出兵失败,固然是因为马谡违反军令。可是我用人不当,也应该负责。”他就上了一份奏章给刘禅,请求把他的官职降低三级。
刘禅接到奏章,不知该怎么办才好。有个大臣说:“既然丞相有这个意见,就依着他吧。”刘禅就下诏把诸葛亮降级为右将军,仍旧办丞相的事。