平定了许都之乱之后,曹操本想亲自去汉中督战,可代郡北部乌桓又趁机造反,曹操只得令三子曹彰领兵前去平叛,曹彰领兵走后不久,宛城南阳人侯音因不满曹操税务太重聚众杀死太守起兵造反,欲与镇守荆州的关羽联合威协许都,曹操大惊,又慌忙急令镇守襄阳的曹仁出兵镇压,一切安排妥后,曹操这才亲率大军出邺城西进长安,在九月份到达长安,曹操并没有继续向汉中进军,他担心侯音与关羽会合曹仁不敌,这才坐镇长安,指挥汉中与塞北及南阳的战事。
而此时向阳平关挺进的刘备大军已兵至剑阁,刘备担心归附曹操阴平的氐王强端会过马鸣阁偷袭自己的后路,于是刘备便令陈式引五千兵马前去占领马鸣阁,以阻断强端与曹操的联系。
马鸣阁是白水之边阴平通往关中的一个山涧要塞,在剑阁的西北方向,离剑阁不远。其道路是在峭壁上架木为梁,一侧是峭壁,一侧为深谷河流,牵马经过时马都会惊得长鸣不止,因而叫马鸣阁。
陈式引兵走后,刘备进入阳平关地界,刘备听从法正的见意先去攻打阳平关西南的广石,广石与阳平关呈犄角之势,若取阳平关最好的策略就是先把广石这个犄角给他砍下。
然而出乎刘备意料的是,镇守广石的是魏国名将张合。张合在瓦口关被张飞击败后退守广石,张合也是一名久经杀场的老将,他见刘备引大军来攻,只坚守不出,日夜防范,刘备攻了多日也未攻下,倒伤亡了不少兵士,刘备一筹莫展。
再阳平关守将夏侯渊,夏侯渊听刘备来犯,又探听到刘备令陈式引一军去占领马鸣阁,于是夏侯渊便令徐晃引一军前去攻打马鸣阁。徐晃引一军赶到马鸣阁,但见陈式在马鸣阁要塞之上分十营把守,心中大喜。那么陈式为什么要把这五千人马分十营把守呢?这岂不兵力分散?其实这也有陈式的难处,一是马鸣阁栈道狭窄,无法立营扎寨;二是马鸣阁前后道路都在山腰上,没有宽阔的地方,再者陈式也不懂得怎样排兵布阵,他根本就没料到曹军会来的这么快,更没料到来的是大将徐晃,陈式哪里是徐晃的对手,两个人交手不到十合,陈式便拨马败走,徐晃挥军掩杀,马鸣阁道路狭窄,陈式军拥挤不得过,被杀死的、跌落山谷坠入河流的不计其数,陈式弃马而走,最后只带了几百人逃回成都。
徐晃大获全胜,随即撤回阳平关。
刘备攻打广石几十没攻下,又听闻陈式几乎全军覆灭,刘备心恢意冷,只得撤兵去攻打阳平关,但阳平关更是难攻,至年底,阳平关依旧在夏侯渊的手中,而此时刘备的兵马损失已过半,粮草也告罄,刘备不得不急书成都,要镇守成都的诸葛亮发兵救援。
诸葛亮收到刘备的救援信后犹豫不决,发兵去救援吧,西川才取下不久,民心还未归化,担心川中有变,不救援吧,这是刘备的亲笔信,看来刘备确实遇到了困难,思量许久,诸葛亮便把功曹杨洪找来询问计策。杨洪道,“军师,汉中乃益州的咽喉之地,是益州的门户,如果汉中被曹操占领,则曹操会直接威协到我益州,益州则会不安全了,当今之事,益州的男子应当兵去前方作战,女子应在后方供应运输,以全力支持汉中之战,这样才有希望拿下汉中,不可有丝毫的犹豫。”
诸葛亮听闻后点头称是,于是诸葛亮开始调兵遣将,调运粮草,前去支援刘备。同时诸葛亮很赞赏杨洪,给刘备写信推荐杨洪为蜀郡太守,因蜀郡太守法正正与刘备在汉中作战,蜀郡太守空缺,诸葛亮这才推荐杨洪前去上任。
援军及粮草到达刘备的大营后,刘备又要想去攻打阳平关,法正献计道,“主公,阳平关固若金汤,又加夏侯渊防守严密,夏侯渊只坚守不出战,不宜攻取,我们不如放弃阳平关,南渡汉水,去取汉水之边的定军山,定军山是通往南郑的必经之路,我们占据定军山,分两路去佯攻南郑,这样夏侯渊必出关来阻挡我们,只要夏侯渊出关,我们便有机会攻取阳平关。”