黄初七年(226年)五月,魏文帝曹丕去世,太子曹叡即位,是为魏明帝。曹丕时期曹魏把注意力放在了东方,假借伐吴清除青、徐一带以臧霸、孙观等为首的割据势力。与蜀汉接壤的雍凉地区则明显防备松懈。而蜀军在经过南征和两年操练后,军力已满血复活。以有心攻无意,正是天赐良机。建兴六年(228年)春,诸葛亮上《出师表》,提兵汉中,拉开了北伐序幕。
诸葛亮第一次北伐是最接近成功的一次,此时的蜀汉宿将大多还在世,国力经过多年的发展也足可与曹魏一战。而曹魏方面还未对蜀汉引起重视,守备空虚。此外,驻守上庸的曹魏新城太守孟达原为蜀将,在诸葛亮的招揽下也准备叛魏投蜀。后来孟达虽然被司马懿快速平定,但毕竟牵制了部分曹军,减轻了诸葛亮这边的阻力。
诸葛亮的初次北伐的计划是攻击曹魏最偏远,也是最薄弱的凉州,然后再从凉州居高临下图取关中。具体部署为镇东将军赵云、扬武将军邓芝率一支军马作为疑兵,由箕谷摆出要由褒斜道北攻郿城的形势,以吸引魏军。诸葛亮则亲率主力向祁山发起进攻,并派马谡率军驻守街亭。
战前,魏延提出子午谷奇谋直取长安,但诸葛亮并未采纳。子午谷奇谋重在一个“奇”字,如果不能迅速的通过,被敌军发现后把守住出口,只有死路一条。建兴八年(230年)夏,曹真亲率十万大军走子午谷伐蜀。魏军在进入子午谷后,大雨不期而至,连绵一个月,沿途的栈道桥梁被洪水冲毁。曹真命大军一边抢修栈道,一面寻找山间小路继续前行。但因为雨势实在太大,栈道无法修复,才走了一半,魏军官兵便被累得够呛,死活走不动了。九月,曹真只得班师。东晋永和十年(354年),东晋大将桓温出兵北伐,命部将司马勋从子午道出兵攻击关中前秦。前秦丞相苻雄预计到了晋军的行军路线,率领七千骑兵在子午谷设伏。可怜晋军还没走出谷道,便被团灭了。
第一次北伐一旦失败就会打草惊蛇,再想北伐就更难了,必须慎之又慎。因而诸葛亮选择先从防守最为薄弱的凉州突破。把守街亭吞并凉州,而后沿渭河东下攻入关中,再派兵把守潼关。而后发展几年出潼关夺取天下。这个策略稳扎稳打,步步为营,逐步的逆转与曹魏的国力差距,是蜀汉争夺天下的最佳决策。在后三国时代,北周就是在占有关中、凉州、巴蜀后出潼关一统北方的。只不过北周立足关中,由关中攻取凉州再南下巴蜀,与诸葛亮的步骤恰好相反。
街亭是通过陇山的关口,只要马谡守住街亭,阻断关中魏军,凉州就将归蜀汉所有。结果大家都知道了,言过其实的马谡败于张郃,曹魏援军源源不断从街亭支援凉州,蜀汉在凉州地区的军事优势荡然无存,诸葛亮只得退兵。此战最大的收获就是收取姜维,其次是诸葛亮学曹操将凉州的千余家百姓迁入汉中,但只是杯水车薪罢了。此后曹魏将军事重心转移至雍凉一线,使诸葛亮后四次北伐难上加难。
建兴六年(228年)冬,曹休在石亭被东吴将领陆逊打败,诸葛亮听说魏军大举东进,关中兵力空虚,遂再次北伐。此次北伐诸葛亮兵出陈仓道,但曹魏方面早有准备,在各个出蜀要道布置起严密防御。诸葛亮由陈仓道北上后就遇到一个前所未有的坚固堡垒——郝昭镇守的陈仓城。诸葛亮全力攻打陈仓,郝昭百般防御,昼夜相持二十余日不分胜负。曹真派费耀等率军来救,魏明帝也召张郃前往迎击诸葛亮。二次北伐无功而返。
建兴七年(229年)春,诸葛亮第三次北伐,派陈式攻取武都、阴平两郡,意图诱魏雍州刺史郭淮决战。但郭淮在得知诸葛亮正率大军赶来后,避战退走,计划失败。此次北伐虽然攻取曹魏两郡,但并未对战局造成影响,算作小胜。
建兴九年(231年),诸葛亮再出祁山,司马懿统军与战。此战是诸葛亮与司马懿的唯一一次正面交锋,司马懿败得相当惨,此后就一心一意做起了缩头乌龟。在司马懿看来,蜀军远道而来,粮草不继,拖也能把诸葛亮拖死,没必要冒险出战。此计正中诸葛亮的弱点。为保障后勤,诸葛亮制造了传说中的木牛流马解决了粮草运输问题,并以战养战抢收了魏军的麦粮。但到最后还是出了问题,管后勤的李严掉链子了。
李严与诸葛亮同为托孤大臣,诸葛亮是随刘备入蜀群臣的代表,李严是蜀中群臣代表。与主张“汉贼不两立,王业不偏安”的诸葛亮不一样,李严更多的是想保境安民,反对劳民伤财的北伐。于是在诸葛亮狠揍司马懿的时候,李严在后方给诸葛亮穿起了小鞋,不供给军粮了。诸葛亮等不来军粮只好撤军,回到蜀地以后立即将李严贬黜,但已于事无补。
建兴十二年(234年)春,经过三年的准备,诸葛亮第五次北伐。此时的诸葛亮已不堪重负,自知时日无多,就舍弃了较为好走但路程绕远的祁山道,改走褒斜道。四月,蜀军到达郿县,在渭水南岸的五丈原下扎营寨。司马懿还是老办法——避而不战。诸葛亮遣使给司马懿送来女人衣服,讽刺他怯懦如妇人。司马懿非但没有怒而兴师,反而穿给使者看。诸葛亮也是无可奈何。八月,诸葛亮病故于五丈原,享年五十四岁。杨仪、姜维等遵照诸葛亮遗嘱,秘不发丧,缓缓退军。司马懿率军追击,见蜀汉军帅旗飘扬,诸葛亮羽扇纶巾坐在车里。司马懿怀疑是诸葛亮诈死诱敌,赶紧策马收兵,“死诸葛吓走生仲达”由此而来。
当年刘邦从汉中出兵与项羽争霸只用四年就一统天下,而诸葛亮北伐前后八年,到头来竟寸步难行。不是诸葛亮不如韩信,而是时代不同了。诸葛亮在《隆中对》曾言“天下有变,则命一上将将荆州之军以向宛、洛,将军身率益州之众出于秦川”。说白了北伐成功的前提是“天下有变”,即曹魏发生动乱,重现刘邦出汉中时中原诸侯割据的局面。曹操死后,曹丕、曹睿虽不如曹操英明神武,但守成有余。诸葛亮没有等来曹魏动乱,却等来了失街亭,等来了宿将殒命、英雄迟暮。
除了天时,在地利上诸葛亮也不如当年的韩信。韩信时,汉江和西汉水交汇一处,上至雍凉下至江汉都是一个流域上的。在陈仓道上还有一座堰塞湖名曰天池大泽,能够提供沿着陈仓道的南北水路。韩信出关中时先是派樊哙、灌婴沿西汉水出祁山道佯攻陇西,吸引章邯主力。自己率主力军出陈仓道,攻其不备。兵贵神速,韩信时代无论出祁山还是出陈仓都有便捷的水路以保障出奇制胜。而汉初的武都大地震使西汉水改道注入嘉陵江,从此与汉水断绝,天池大泽也消失了陈仓道南北水路仅剩下嘉陵江上源故道水,已不具备快速运兵的条件。
电视剧《三国》中诸葛亮被刘备请出茅庐之时,水镜先生叹道:“孔明虽得其主却不得其时,惜哉惜哉!”诸葛亮五次北伐均告失败,其手下败将司马懿及其后人却能一统江山,非才能不及,确为时不利也。诸葛亮出山之时北方已经大局已定,在荆州、街亭接连丢失后,夺取天下最后的希望也破灭了。诸葛亮却明知不可而为之,既是在报刘备知遇之恩,也是在消耗曹魏国力,为蜀汉续命。然而无论诸葛亮如何鞠躬尽瘁,都无法以一人之力逆天下大势,最终落得“出师未捷身先死,长使英雄泪满襟”悲壮结局。