街亭之戰中,馬謖違反諸葛亮戰前部署,被魏軍趁機而入,致使街亭失守。諸葛亮得知街亭失守後,急忙調集軍隊,準備撤回漢中。諸葛亮分派僅剩的5000兵馬去西城搬運糧草,這時得報司馬懿統領15萬大軍已兵臨城下。此時運糧士兵僅2000餘人,城中兵馬不足3000,眾人聽到大兵壓境,無不大驚失色。諸葛亮深知,此時若棄城逃跑,無疑會暴露實情,在15萬大軍麵前,必然無法逃脫。於是,他神情自若地傳令軍士:“將城中所有戰旗盡數放倒,所有兵士堅守城池,凡有擅自出入和大聲喧嘩者,一律斬首!”又命令將四方城門大開,每一城門處派20軍士扮作百姓,灑水掃街,裝作若無其事的樣子。一切安排就緒後,諸葛亮頭帶方巾,身披鶴氅,帶兩名小童,持琴登城。諸葛亮邊彈琴邊飲酒,一付安然悠閑的神態。
魏軍先鋒部隊見狀,不知虛實,急忙策馬回報司馬懿。司馬懿聽報隨後來到城下,遠遠見到城上諸葛亮悠閑自得邊飲邊彈,兩位小童站立身後,琴聲悠悠不絕於耳。再看四處城門大開,每一城門處都有一二十名百姓,在細心地灑水掃路,對魏軍視而不見。見狀,司馬懿心中大疑。他對諸葛亮有很深的了解,認為素來謹慎行事的諸葛亮,從不弄險,今天見他如此安然,城中秩序井然,15萬大軍壓城猶如不見,其中必有埋伏。司馬懿越想越怕,急忙傳令撤兵。司馬懿之子司馬昭是員虎將,見要退兵,急忙勸阻司馬懿說:“諸葛亮手中可能無兵,必是在疑惑我們,不如讓我帶兵攻城,即可知虛實。”司馬懿不準,15萬魏軍全部退卻。諸葛亮見魏軍遠去,遂拍掌大笑,結果盡在意料之中。城中兵士見千鈞一發之險,頃刻間化作烏有,不由得驚喜交加。諸葛亮含笑對餘悸未盡的兵士們說:“司馬懿素來知我謹慎,不曾輕易弄險,而今見我穩坐城頭,安然飲酒撫琴,城門大開,百姓自若不慌,想必我定有奇兵伏於城中,所以不戰而退了。此疑兵之計,是萬不得已才用的,倘若隨便用此計,一旦被敵人識破,必遭大敗。”在眾人的讚歎聲過後,諸葛亮接著說:“司馬懿急切中退兵,必然選擇小路,可速去通告關興、張苞二位將軍設伏。”
不出所料,司馬懿正率軍沿小路向北退卻,行至武功山時,忽聽得山後鼓炮齊鳴,殺聲震天,隻見衝出一隊人馬,將旗上寫著張苞。司馬懿以為這是諸葛亮早已埋伏好的蜀軍,急令魏軍不許戀戰,拚死衝殺,以求生路。剛剛衝出不遠,又是一聲號炮,隻見一隊蜀軍從左路向魏軍衝來,一看將旗是關興的兵馬。司馬懿大驚,更加確信這一切都是諸葛亮預先的計謀,一時間不知蜀軍到底有多少兵馬。魏軍已成驚弓之鳥,絲毫不敢停留,丟掉糧草輜重,沿此路向山後潰逃。
司馬懿哪裏知道,蜀軍的兩路兵馬總數不過5000,在此設伏,隻是虛張聲勢,並未實戰。這是諸葛亮利用司馬懿疑心過重的心理,以幾千蜀軍,兵不血刃地嚇退了司馬懿的15萬大軍。