東漢建安二十二年(217年)劉備親率趙云、黃忠、魏延等將領(lǐng)進軍漢中,拜法正為軍師,參謀軍機,令張飛、馬超、吳蘭等率軍開赴武都,屯兵下辨(今甘肅成縣),以牽制、分化曹軍力量,配合蜀軍主力攻打漢中。命諸葛亮留守成都,負(fù)責(zé)為前線輸送兵員、糧草。
建安二十三年(218年)春,曹操得知劉備率軍挺進隴右,急遣大將曹洪、曹休統(tǒng)兵往攻下辨。曹操對智勇雙全的族子曹休寵愛異常,常贊他“吾家千里駒也”。此次進軍隴右,曹洪為主帥,曹休為參軍,替曹洪出謀劃策,但實際是由曹休說了算。
彼時,劉備命將軍吳蘭鎮(zhèn)守下辨,當(dāng)二曹率軍前來進攻時,曹休突然發(fā)現(xiàn)在己軍后面的固山上突然出現(xiàn)了大批蜀軍,隱約能看到旗號上寫著“張”字。這顯然是劉備帳下二號悍將張飛的隊伍,看樣子像是要切斷魏軍的退路。
正欲發(fā)起進攻的魏兵見自己身后出現(xiàn)大批蜀軍,立即慌亂起來,曹休卻很冷靜,對眾將士說:“賊實斷道者,當(dāng)伏兵潛行。今乃先張聲勢,此其不能也。宜及其未集,促擊蘭,蘭破則飛自走矣?!?/p>
主將曹洪聽后甚覺有理,于是揮軍猛攻下辨。吳蘭令部將任夔出戰(zhàn),旋即被魏將張郃斬殺,吳蘭力戰(zhàn)不支,只得倉惶棄城而走,往漢中方向逃去,在陽平關(guān)(一說在陰平道)被氐族豪酋強瑞(氐人首領(lǐng)名字)截殺,首級被送往曹操處。張飛、馬超遙見下辨失守,鞭長莫及,只好率部向后撤退。

劉備率主力直攻漢中,在陽平關(guān)與曹軍對峙。為了保證道路暢通,劉備派將軍陳式率10余營將士屯扎、扼守馬鳴閣道(今四川廣元昭化縣西北)。馬鳴閣道是蜀中古棧道,位于今天的四川廣元市昭化縣以北朝天鎮(zhèn)附近,沿嘉陵江河谷修建,是關(guān)中平原通往漢中的必經(jīng)之道。劉備派陳式駐守馬鳴閣道,目的一是保證后方供應(yīng),另一方面保證蜀軍退路。還有扼住馬鳴閣道,就能斷絕曹魏關(guān)中與漢中的聯(lián)系,再尋機全殲駐守漢中之魏軍,最終從曹操手中奪取漢中這一戰(zhàn)略要地。
馬鳴閣不僅對蜀軍重要,對魏軍亦很重要,誰控制住了馬鳴閣道,誰就掌握了漢中之戰(zhàn)吃的主動權(quán)。
曹操聽說后親自趕到漢中,授意在陽平關(guān)與劉備相持的曹軍主將夏侯淵派大將徐晃率軍襲擊陳式,以奪回對馬鳴閣道的控制權(quán),馬鳴閣道之戰(zhàn)旋即爆發(fā)?!度龂?魏書?張樂于張徐傳》記載:“太祖還鄴,留晃與夏侯淵拒劉備于陽平。備遣陳式等十余營絕馬鳴閣道,晃別征破之,賊自投山谷,多死者。太祖聞,甚喜,假晃節(jié)”。
曹軍大將夏侯淵派將軍徐晃率軍分別襲擊陳式等十余營蜀軍,陳式軍被擊敗,蜀軍士卒無退路可逃,許多人走投無路,紛紛跳下山崖,死傷慘重。史料沒有記載十多營蜀軍遭徐晃打擊后傷亡多少,但從“賊自投山谷,多死者”的記載看,陳式被徐晃擊潰后所部肯定損失很大,懸崖下盡是投谷自殺蜀軍士兵的尸體,可見馬鳴閣道之戰(zhàn)戰(zhàn)況之慘烈異常。
曹操聽說徐晃大破陳式的消息后十分高興,立刻頒給他符節(jié)(假節(jié)),以示褒獎、信任,并下令說:“此閣道,漢中之險要咽喉也。劉備欲斷絕外內(nèi),以取漢中。將軍一舉,克奪賊計,善之善者也?!薄疤嫠熳灾陵柶?,引出漢中諸軍”。
馬鳴閣之戰(zhàn)是劉備遭遇的慘痛失敗,其軍事才能亦屢遭質(zhì)疑。劉、曹兩軍為了爭奪漢中而幾番鏖戰(zhàn)后,誰也無法一口吞噬誰,兩軍遂相持于巴、漢之間。

劉備因損兵折將過重,“急書發(fā)益州兵”,留守成都的諸葛亮接到劉備的求援信后,與從事楊洪商榷對策。楊洪建議說:“漢中則益州咽喉,存亡之機會,若無漢中則無蜀矣,此家門之禍也。方今之事,男子當(dāng)戰(zhàn),女子當(dāng)運,發(fā)兵何疑”!
諸葛亮采納了楊洪的建議,當(dāng)即征發(fā)援軍,開赴漢中前線。從建安二十二年(217年)劉備出兵到建安二十三年(218年),劉備與夏侯淵在陽平關(guān)一線僵持、對峙了1年多。