平定南中后,诸葛亮着手发展蜀汉经济,蜀地号称大府,但战争时期,却明显不如魏、吴两国效果好。此时,魏连年攻吴不利,逐渐将矛头转叫弱蜀。为避免被动,诸葛亮决定北匕伐魏,一来抢占先机,一来可向雍州、凉州等地发展,内政外交顺利,诸葛亮自觉以一战,便加紧战备,修戍讲武,准备北伐。按《隆中对》的分析,天下有事时,蜀汉可以兵分荆、益两路北上,完成统一大业。荆州失守后,兵分两路的计划已辁不可能实现,唯一的办法就是从汉中出发过斜谷入关中或凉州。226年,曹丕死,曹睿继位。诸葛亮借此新丧可乘之机,227年在做好一切准备之后他进攻汉中,决意伐魏。临行上舍一表,这就是使人感佩的《出师表》,他声称要在危急存亡之秋打开局面,嘱咐刘禅亲贤臣,远小人,妥善处理宫中各务。此后,他亲率大军六出祁山,专意北伐。
228年春,诸葛亮初出祁山,由祁山北上,有子午道、潇骆道、斜谷、箕谷四线,他扬言要由斜谷道取郿(今陕西眉县北〕,派赵云、邓芝率一部分军队于箕谷道发动进攻,并占据箕谷。这一招吸引了曹魏方面的注意力,大将军曹真布置军队在箕谷迎敌,诸葛亮料定敌人上当后,亲率主力沿西汉水上溯,北出远离斜谷的祁县(今甘肃西和北祁山堡)。攻祁山以夺取陇右。祁山附近曹魏守备不强,一时南安、天水、安定三郡同时响应,投降蜀汉,关中也为之震动。魏明帝曹睿见事不妙,亲占西镇长安,以张合为前锋引军急进,在陇山附近与蜀军对阵。蜀汉前锋进至街亭时,与张合遭遇,前军指挥可谡不顾诸葛亮部署,上山扎营,打算居高临下发动攻势,不料反受围困水路被切断,粮草也不得供应,只得突围,失利后,仅保存王平所率2000人。街亭失守,进无所据,无奈之下,诸葛亮退回汉中。后撤时,诸葛亮拔两县下余家总算捞回一些补偿。
这战,本以诸葛亮失败告终。为了给神机妙算的诸葛丞相挽回点面子,罗贯中在《三国演义》中给他安排了一出空城计,街亭失守前军败退,司马懿率大军杀奔诸葛亮的大本营阳平城。一时间情势危险,要知道在诸葛营中只剩2500军土,留守的又净是些文官。顿时众人大惊失色。只见诸葛亮镇定自若。大开城门一面命人将旌旗取下藏起,一面让20名军上扮作百姓清扫街道,他自己只带童子两名。城头敌楼前倚栏而坐,焚香操琴。司马懿杀到,见城中这般情形,大为狐疑,大军众到,竟然无所防备,不是有埋伏是什么?思虑之下不敢攻城,领大军退走。妙计得逞的诸葛亮于是躲过一大劫。其实,罗贯中的描绘还是有一点根据的。空城计事出郭冲二事(郭冲为朱晋时人)的记载:诸葛亮屯军于阳平,遣魏延等人率大军东下,只派万人留守。司马懿20万人,正好与魏延军错道,来到阳平,距诸葛亮仅60里。派人侦探,得知诸葛亮在城中兵少力弱,诸葛亮也知道司马懿率大军逼近,此时魏延等人巳远去,所有的将领、士兵都大惊失色,不知该怎么办。渚葛亮则神情自若,下令军中偃旗息鼓,不得妄出,又令大开4个城门派几人作洒扫状,司马懿知道诸葛亮老成持军,见他势弱反镇定,于是判断城中必有伏兵,于是引军而走。这段记载。为三国志做注的裴松之认为不合事实,他分析:诸葛亮初次屯军阳平时,司马懿还只是荆州都督,镇宛城。立到曹真死后,他才开始在西线负总责。在此前后,不可能有阳平交兵这事。更重要的是,这一出空城计不合情理。既有力大军,肯定数倍于対手,又何必怕埋伏,更何必退走呢?苦心极虑、蓄势而发的诸葛亮一战而溃,懊恼、沮丧甚至后悔情绪自然不可免,军队的士气也大受打击。为此,诸葛亮挥泪斩杀爱将马谡,以严肃军纪,激励人心。同时上书刘禅,要求自贬二等。