说曹操率军西征,把兵分成三队:前锋是夏侯渊和张郃;操自己带着中军和其他将领;后队由曹仁和夏侯惇负责押运粮草。早就有细作把消息送到汉中。张鲁和他弟弟张卫商量怎么抵御敌军。张卫说:“汉中最险要的地方是阳平关。咱们可以在关口左右,靠山靠林,设十多个寨子来迎敌。兄长你在汉宁,多准备些粮草应付他们。”张鲁听了,派大将杨昂和杨任,带着弟弟马上出发。军马到了阳平关,寨子已经布置好了。夏侯渊、张郃率前军赶来,听说阳平关有了准备,就在离关十五里外扎营。那天晚上,士兵们都累了,各自休息。忽然寨后着起大火,杨昂和杨任两路兵马杀过来抢寨。夏侯渊、张郃急忙上马应战,四面都是大军,敌军一拥而入,曹兵大败,只好退回去见曹操。操很生气,说:“你们二人带军多年,难道不知道‘远行疲劳时要防备劫寨’?怎么一点准备都没做?”想要斩杀他们二人以儆效尤,众官员劝阻二人才得以免死。第二天,操亲自领兵做前队,看到山势险峻,林木茂密,不清楚路况,怕有埋伏,就带军回寨。他对许褚和徐晃说:“要是早知道这里这么险恶,根本不会起兵来。”许褚说:“军队都已经来了,主公可不能怕累啊。”第二天,曹操又上马,只带许褚、徐晃两人去侦察张卫的寨子。三匹马转过山坡,远远的望见张卫的寨子。曹操扬起马鞭远远的指着,对二将说:“这寨子如此坚固,一时难以快速攻下!”话还没说完,背后忽然一声喊,箭雨纷飞。杨昂和杨任分两路杀来。曹操大惊。许褚大声叫道:“我来抵挡敌人!徐公明快保护好主公!”说完提刀策马冲上前,拼力抵挡二将。杨昂、杨任面对许褚的勇猛,不能抵挡,只好回马退走,其余士兵不敢出击。徐晃护着曹操跑过山坡,前面又有一支军队赶来,一看原来是夏侯渊和张郃。他们听见喊声带军杀过来接应。于是赶退了杨昂和杨任,救回曹操进寨。操重重奖赏了这四位将领。
从此两边对峙了五十多天,但没有真正交战。曹操下令撤军。贾诩说:“敌方的兵势还不明朗,强弱不知主公为何就要先退?”曹操答道:“我看贼兵每天都很警觉,一时难以取胜。我先以退军示弱,等敌人松懈不备,然后分轻骑兵绕后偷袭,必能取胜。”贾诩赞叹说:“丞相神机妙算,难以捉摸。”于是命夏侯渊和张郃分两路,各带三千轻骑,走小路绕到阳平关后面。曹操一边率大军拔寨起营。杨昂听说曹兵撤退,和杨任商量,想趁机攻打。杨任说:“曹操的计谋多变,不知道是真是假,不可轻追。”杨昂说:“你不去,我自去。”杨任苦劝未果。杨昂带着五个寨子的兵马前进,只留下少量兵守寨。
这天大雾弥漫,即使人站在眼前也根本看不见。杨昂的军队走到半路,无法前进,只好暂时扎营。说到夏侯渊这边,他带着部队绕过山后,发现雾气很重,天上也飘着浓雾,又听见人声马嘶,怀疑有伏兵,就急着催马赶路。结果在大雾中误闯到杨昂的寨子前。守寨的士兵听见马蹄声,以为是杨昂的军队回来了,就开门让他们进。曹军一下子冲进寨子,发现寨子空着,就放火烧了起来。五个寨子的军士见状,全都弃寨逃走。等到雾散了,杨任带着军队赶来增援,和夏侯渊打了没几个回合,忽然张郃的军队从背后赶到。杨任被夹击,只能杀开一条路,拼命往南郑跑。杨昂正准备撤退,却被夏侯渊和张郃两路人马占了寨子。背后又有曹操大军赶来,两面夹击,四面无路可走。杨昂想拼死冲出去,正好撞上张郃,两人交手,结果被张郃杀死。残兵败将逃回阳平关,见到了张卫。原来张卫知道杨昂和杨任都败了,寨子都已失守,于是半夜抛弃阳平关逃跑了。曹操于是顺利拿下阳平关和各个寨子。张卫和杨任回去向张鲁报告。张卫说两个将领失守了隘口,因此关口守不住了。张鲁大怒,想要斩杀杨任。杨任说:“我曾劝杨昂不要追曹操,他不肯听,所以才有了这次的失败。我请求再率军出战,这次一定能斩杀曹操。若不胜,我甘愿受军令处罚。”张鲁答应了,交给他军令状。杨任上马,率两万军队离开南郑下寨。这时曹操率军前进,先命夏侯渊带五千兵往南郑路上侦查,正好遇上杨任军队,两军摆开阵势。杨任派部将昌奇出马交战,战了不到三合,就被夏侯渊一刀斩杀于马下。杨任亲自持枪出战,和夏侯渊缠斗三十多合,难分胜负。夏侯渊假装败退,杨任追赶,结果中了夏侯渊的拖刀计,也被斩杀于马下。杨任军大败逃回。曹操得知夏侯渊斩了杨任,立刻率军直逼南郑下寨。张鲁惊慌,召集文武商议对策。阎圃说:“我推荐一个人,能敌得过曹操麾下的将领。”张鲁问是谁。阎圃说:“南安的庞德,曾随马超投奔主公。后来马超去西川,庞德因为病了没走。如今蒙主公恩养,何不派他出战?”
张鲁大喜,离开召来庞德厚赏,拨给他一万军马,命他出战。庞德离城十余里,与曹军相对,策马迎战。曹操在渭桥时深知庞德勇猛,便嘱咐众将说:“庞德是西凉勇将,原是马超手下,现在虽然归附张鲁,但内心并未真心归顺。我想要得到此人,诸位将领都要与他缠斗,消耗他的力气,然后再擒住他。”张郃先出马,交战数合便退。夏侯渊也战了几合退走。徐晃又交战三五合也撤。最后许褚战了五十多合才退。庞德拼死战斗,面对四将毫无畏惧。众将都当着曹操面夸赞庞德武艺高强。曹操心中大喜,和众将商议:“怎样才能让他归降?”贾诩说:“我知道张鲁手下有个谋士叫杨松,这人极其贪图贿赂。我们可以暗中送金银给他,叫他诬陷庞德,这样就能行了。”曹操问:“怎么让人进得了南郑?”贾诩说:“明天交锋时,我们先诈败,弃寨逃走,让庞德占领寨子。夜晚再偷偷带兵劫寨,庞德必定退回城里。然后选个能说会道的军士,扮成敌军混进阵中,这样就能进入城中。”曹操采纳计策,选了个军校,重赏赐他,给他一副金掩心甲,让他贴身穿着,再罩上一件汉中军士的军服,安排他半路等候。
第二天,先让夏侯渊和张郃两路军队远去埋伏,叫徐晃去挑战。打了几合,徐晃假败退走。庞德趁机率军掩杀,曹兵全军撤退。庞德夺得曹操寨子,看到寨中粮草充足,非常高兴,立刻报告张鲁,并在寨中设宴庆祝。当夜过了二更,忽然三路起火:正中是徐晃和许褚,左边张郃,右边夏侯渊。三路军马齐齐杀来抢寨。庞德来不及防备,只能上马拼杀,拼命往城里跑。身后三路追兵紧追不舍。庞德急忙喊开城门,带兵一拥而入。
这时,曹操派来的细作已经混进了城里,直接去杨松的府邸拜访,把情况说了个明明白白:“魏公曹丞相久闻你品德高尚,特派我送这副金甲当信物,还有一封密信。”杨松大喜,打开密信一看,念道:“你回复魏公,让他放心,我自有妙计应对。”他就让细作先回去了,自己连夜去见张鲁,说庞德已经受了曹操的贿赂,出卖了这次防守阵地。张鲁听了大怒,叫庞德来责问,想要斩杀他。阎圃连忙劝阻。张鲁说:“你明天出战,输了就斩你!”庞德心里抱恨的退下了。第二天,曹军开始攻城,庞德率军冲出去迎战。曹操命许褚迎战,许褚假装败退,庞德追上来。曹操亲自骑马站在山坡上喊道:“庞令明,你怎么不早点投降?”庞德心想:“抓住曹操,可抵得上一千名上将!”于是策马飞奔上坡,忽然一声喊,只觉得天塌地陷,他和马一齐跌进了陷坑。四周的钩索猛然一拉,把庞德活捉了起来,押上了坡。曹操下马,吩咐士兵退下,亲手解开庞德的绑绳,问他愿不愿意投降。庞德一想张鲁不讲情义,情愿拜降曹操。曹操扶他上马,一同回到大寨,故意让城上守军看到。有人回报张鲁,说庞德和曹操并肩而行。张鲁更信以为真,觉得杨松的话成了实。第二天,曹操三面架起云梯,飞炮猛攻。张鲁见形势危急,和弟弟张卫商量。张卫说:“放火烧光粮仓和府库,带着人去南山守巴中吧。”杨松说:“