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