曹操親自帶兵,西征張魯。消息傳到漢中,張魯與弟張衛商議,張衛說:“漢中最險的地方就是陽平關,可以在關的左右,依山設下十幾個寨柵,攔住曹兵。”張魯聽從,就派張衛、楊昂、楊任諸將,帶著軍馬到陽平關下寨。曹操帶著夏侯淵、張郃等諸將來到之後,也紮下營寨,對陽平關和左右敵營進行攻打。張衛憑借群山的險要,曹軍連攻好幾天,不能攻破。曹操於是傳令退軍。賈詡說:“主公怎麽無緣無故,自己撤軍了呢?”曹操說:“我一時難以取勝,所以假裝退兵,叫敵人放鬆警惕,然後偷著抄到後麵襲擊他,必能取勝。”賈詡說:“丞相神機妙算,真是想不到。”於是曹軍都從山坡各處營寨下來,順著山穀,往回走。

夏侯淵帶領本部軍兵,也從一條穀道撤兵,走到夜裏的時候,就走錯了路,誤走到楊昂的營寨前。這時候,一群麋鹿受了驚嚇,就一起奔跑,紛紛跳進楊昂的營寨,進去之後,橫衝直撞。楊昂的士兵以為是曹軍殺進寨來,驚慌失措,自相踐踏。夏侯淵見狀,趁機殺進寨中。楊昂軍四散奔逃。楊昂要突圍而出,正遇到張郃,二人交手,被張郃殺死。曹操趁勢向陽平關殺去,奪了關口。張衛看各處營寨已經守不住了,幹脆帶著楊任,逃回南鄭。

張衛敗回,見到張魯,張魯大驚,連忙向文武問計。閻圃說:“我保舉一個人,可以打得過曹操手下諸將。”張魯問是誰。閻圃說:“龐德從前跟著馬超投奔主公,後來馬超投奔劉備,龐德得病沒有走。現在主公待他很好,何不叫他出戰?”

張魯大喜,立刻叫來龐德,重重賞賜,給他一萬軍馬,出城迎敵。曹軍來到城下,曹操說道:“龐德是西涼勇將,原是馬超的部將,我想收降他。你們跟他打的時候,不要太急,叫他累得沒了力氣,然後生擒他。”於是張郃首先出戰,跟龐德打了幾個回合,就撥馬回去。夏侯淵也打了幾個回合就退了。徐晃又打了三五回合也退了。最後許褚大了五十幾個回合也退走。龐德力戰四將,並不畏懼。隨後龐德揮軍朝曹軍殺去。曹軍立刻掉頭就跑。龐德一直殺到曹操的營寨,占了營寨。到了夜裏二更時候,營寨三麵突然著起火來,正中是徐晃、許褚,左邊是張郃,右邊是夏侯淵,三路軍馬,一齊殺進營寨。龐德措手不及,隻得上馬衝殺出來。就見曹操騎著馬,立在山坡上說:“龐令明何不早早投降?”龐德心想:“捉住曹操,頂得上一千員上將。”於是飛馬衝上山坡。突然,連人帶馬,跌到陷坑裏去,四麵鉤子伸出來,把龐德活捉了。

龐德被押上山坡,曹操親自下馬,給龐德解開繩索,問龐德願意投降不。龐德覺得張魯不仁,情願歸降。曹操大喜。