蜀魏两军交战,诸葛亮摆出令司马懿瞠目结舌的阵法。魏军贸然杀入,大败而归。姜维建议乘胜追击,孔明顾忌军粮未到,只得放弃战机。运粮官苟安玩忽职守,粮草贻误数日,本该处斩,诸葛亮念及苟安乃李严侄儿,无奈从轻发落。苟安返蜀途中被魏军擒获,司马懿命他持伪造的密信离间李严、诸葛亮二人的关系。李严果然中计,将密信呈给刘禅,并指出诸葛亮的篡逆之举。刘禅忧虑,决定命诸葛亮即刻班师回成都。孔明无奈,只得只身返蜀。刘禅内室,李严持密信与诸葛亮当面对质。孔明当众揭穿了苟安的阴谋,刘禅将李严打入大牢,降为庶人,诸葛亮将李严之子李丰举荐为尚书令,令众人大为感概。不久,诸葛亮决定返回祁山前线。
成都府内,蜀帝刘禅亲送诸葛亮大军北上伐魏。武功城内,魏军叛将正文前来投靠魏延,并将魏将秦朗人头砍下。魏延大喜,重用郑文。魏延从郑文的口中得出司马懿军中的破绽,不顾马岱的劝阻,决定绕过陇西,直取北原。诸葛亮识破司马懿的诈降计,派王平诸将率兵前去解救魏延。蜀军奋力拼杀方突出重围。诸葛亮命魏延、马岱日日叫阵,引司马懿出城,司马懿坚守不出。孔明命杨仪亲赴魏营见司马懿,并送上战书、艳服以侮辱其守城不战的行为。司马懿非但不怒,反而奉劝诸葛亮清心寡欲。相峙日久,蜀军粮草告罄,诸葛亮坐卧不安。魏军众将苦苦请战,司马懿坚决守城不出。诸葛亮命工匠打造三百架木牛流马用以运粮。司马懿命司马昭阻击蜀军的运粮部队,缴获木牛流马若干,司马懿命人将其用于魏军粮草运输。
面对日益严重的春荒,诸葛亮命王平率军劫司马懿的粮草,王平不辱使命,蜀军大获而归。魏帝曹睿降旨宣布免去司马懿的大都督之职,并命其月内对蜀作战取胜。司马懿决定派十万精锐攻打诸葛亮祁山大营,欲引诱驻守上方谷的守军增援。魏军久攻祁山大营,蜀军危急。魏延率军从上方谷引兵救援祁山大营,魏军不久溃败。司马懿率军转攻上方谷,蜀军败退,魏军最终进入上方谷。诸葛亮大喜,命蜀军点燃上方谷中的粮草,魏军陷入一片火海之中。司马懿自知劫数难逃,命部下可以投降蜀军。就在魏军上下一片哀鸿的危机时刻,上天突降大雨,魏军转危为安。