建興四年夏,曹丕病死,曹睿繼位。當時,與蜀國接壤的雍涼之地[107]沒有合適的將領駐守,曹睿便派司馬懿前去駐守。消息傳到成都,諸葛亮大驚,說道:“司馬懿謀略過人,如果由他駐守雍涼,蜀國必然不得安寧。”馬謖認為,曹睿並不信任司馬懿,如果派人到洛陽散布司馬懿謀反的謠言,曹睿就會殺了他。諸葛亮聽取馬謖的意見,派人到洛陽做手腳,暗中散布謠言。
曹睿聽到司馬懿意圖謀反的傳聞,果然起了疑心,決定親自巡視雍涼,如果發現司馬懿有謀反的跡象,便立即誅殺他。事實證明司馬懿沒有謀反之意,曹睿鬆了一口氣,但仍然不放心司馬懿,便罷免了司馬懿,又命曹休代替他的職務。諸葛亮聽說司馬懿被免職了,欣喜不已,說道:“南蠻已經平定,司馬懿又被罷免,正是北伐中原的好機會。”於是寫了《出師表》[108]呈給劉禪,表達了“出兵北伐,恢複中原”的心願。劉禪命諸葛亮出師北伐。
建興五年春,諸葛亮率領三十萬大軍,以趙雲為先鋒,望漢中而來。曹睿得知諸葛亮率兵殺來的消息,命夏侯淵之子夏侯懋(mào)為大都督,率領二十萬大軍迎戰。魏延認為,夏侯懋調動關中的駐軍,導致關中兵力空虛,如果派五千兵馬從子午穀北上,就能出其不意地占領長安,然後再與從斜穀殺出的大軍配合,前後夾擊,就能一鼓作氣占領鹹陽以西的土地,因此向諸葛亮請命奇襲長安。諸葛亮認為奇襲長安不是萬全之策,萬一遇到魏軍的攔截,不僅會損失五千兵馬,還會導致全麵潰敗,因此拒絕了魏延的請求。至此,魏延對諸葛亮心生憤恨。
趙雲與魏軍先鋒韓德在鳳鳴山相遇,接連殺死了韓德的四個兒子,將韓德打得人仰馬翻。夏侯懋大驚,親自趕來救援,又被趙雲打敗,韓德戰死。夏侯懋見贏不了趙雲,接受程昱之子程武的建議,設下伏兵引誘趙雲,趙雲陷入重圍,眼看就要戰死了,幸虧關興、張苞及時殺到,才突出重圍。夏侯懋退入南安堅守。