當時陳倉由魏將郝昭、王雙負責防守,防衛森嚴。不管蜀軍如何挑釁,都拒不應戰。諸葛亮便與部屬商議對策,因為陳倉地勢險峭,運輸不易,而蜀軍所帶的軍糧連一個月都維持不了。部將們都認為事不宜遲,應該強攻,以免拖延時日,耗費糧食。於是諸葛亮便利用雲梯(春秋時公輸般所發明的攻城之具。把底下以木塊為墊,裝有輪子的雲梯車的四周用生牛皮圍起,以防敵軍的箭矢;裏頭裝有雲梯、飛梯兩種,攻到城下時,便將飛梯駕於雲梯之上,士兵便可以爬上去攻城)、衝車(兵車的一種,以甲覆馬,以鐵包軸,用來衝鋒陷陣)為前鋒,讓士兵爬上城去。

魏帝又派張郃帶兵支援陳倉。當他到達陳倉時,諸葛亮已因糧食不足,引兵而退。魏軍的另一名大將王雙,卻在陳倉與蜀將魏延戰鬥,王雙攻勢猛烈,魏延無法脫身與諸葛亮的主力軍會合。諸葛亮便派人給魏延送去一計,魏延按照諸葛亮的計策,先派士兵埋伏在王雙的營賬附近,然後帶著剩餘士兵,連夜拔營趕回漢中。

王雙得知魏延逃走後,便立刻帶著人馬追擊,這正好中了諸葛亮的計謀。這時,埋伏的士兵點燃了魏軍的營帳,王雙一見後麵一片火光,趕緊下令撤退,奔回山坡左側時被魏延追到。魏軍以為該處有埋伏,大軍潰散,紛紛逃命。

陳倉之役,不能一舉破敵,最主要的原因在於關山阻隔,補給不易。這也是諸葛亮在北伐中的遇到的最難解決的問題。

建興七年(229年),孫權稱帝,吳蜀訂盟。

建興九年(231年)春,諸葛亮發動第三次北伐戰爭。他率大軍進攻祁山,在西城大敗魏軍,射殺張郃。六月,蜀軍因糧盡退兵。

為了解決北伐中的軍糧供給問題,諸葛亮命令軍隊在當地屯田。這時,又出現了一個問題,糧草數量巨大,搬運不便,需要耗費眾多人力牛馬。

諸葛亮早想到這個問題,他很久以前就令部下積存木料,並購買了許多木料。原來他想製作“木牛流馬”,用這些“牛馬”運輸糧草非常便利,因為它們全都不用飲水吃草,還可晝夜運輸,也很輕便。將士們都沒有聽過這種東西,更不知道如何製作了。

諸葛亮說:“我已經畫好圖樣,讓人照圖製作了。我現在把製作‘木牛流馬’的方法告訴大家。”

過了幾天,“木牛流馬”造好了,竟像活的一樣。諸葛亮命部將駕著“木牛流馬”搬運糧草,補給軍需。