張郃帶兵三萬,從漢中南下,到達宕渠山,在宕渠關口,立下營寨。探馬報到巴西,說張郃兵來了,張飛於是帶著一萬兵,出離閬中三十裏,和張郃兵相遇。雙方交戰,張郃被殺得大敗。於是張郃據守山上的關口,張飛攻打,被山上的擂木炮石轟炸,根本無法靠近。張飛想了個辦法,就在山前紮住大寨,每天喝酒,喝到大醉,然後坐在山前罵陣。

劉備從成都派人來犒勞軍隊,看張飛整天喝酒,就回來報告給劉備。劉備大驚,叫來孔明問怎麽辦。孔明笑說:“原來如此。軍隊中怕是沒有好酒,成都的好酒多,可以送五十甕酒給張飛喝。”劉備說:“我弟弟從來都是喝酒誤事,軍師怎麽反倒送給他酒呢?”孔明笑說:張飛喝張郃對峙了這麽久,喝醉之後,他就坐在山前辱罵,旁若無人,這不是貪杯,是計策。劉備方才明白,於是叫人送酒到張飛軍中。

張飛大喜。隨後,張郃在山頂觀望,就見張飛坐在帳下喝酒,叫士兵在前麵相撲表演。張郃說:“張飛欺我太甚!”於是當天夜裏,張郃乘著月色微明,帶兵從山側下來,去偷襲張飛的營寨。到了近處一看,張飛正點著燈,在大帳裏飲酒。張郃大喊一聲,直殺入帳中。就見張飛坐著也不動。張郃一槍把張飛刺倒,一看,卻是一個草人。急忙勒馬轉頭出去。就見對麵一將衝來,攔住去路,睜圓環眼,聲如巨雷,正是張飛。

張飛挺矛躍馬,直取張郃。兩將在火光中,打了三五十個回合。張郃見士兵都在敗逃,沒有辦法,隻好跑回了山上營寨。回去之後,清點人數,發現三萬人隻剩了一萬。於是張郃繼續堅守不出。

張飛隨後連日攻打山上營寨,還是打不下來。張飛見硬打不管用,於是就帶著幾十個騎兵,親自去附近探路。遇到幾個男女百姓,各自背著包,在山上的一條野路上攀著樹藤趕路。關隘不下。飛見不濟事,把軍退二十裏,卻和魏延引數十騎,自來兩邊哨探小路。忽見男女數人,各背小包,於山僻路攀藤附葛而走。張飛在馬上用鞭子一指,對士兵說:“要想打敗張郃,就靠著幾個百姓了,你們喊他們過來。”軍兵連忙把百姓喊到馬前。張飛問:“你們從哪裏來?”百姓說:“我們原本是漢中人,要回去。現在因為打仗,閬中官道走不通了,就從瓦口,過梓潼山,回漢中去。”張飛說:“這條路能通到宕渠山嗎?”百姓說:“經過瓦口,走梓潼山小路,可以到宕渠山背後。”張飛大喜,就把百姓帶回營寨,給他們吃喝,然後吩咐下麵的將官:“你們在正麵攻打,我自己帶步兵從瓦口,走梓潼山,進攻張郃營寨背後。”於是就叫百姓帶路,從小路行軍。

張郃這時正在煩悶,有人來報蜀兵在山下來進攻。張郃披掛上馬,正要下山,忽然又有來報:“關後麵四五處起火,不知道敵兵從哪裏來的。”張郃親自領兵去迎戰。就見旌旗一開,張飛出現在麵前。張郃大驚,趕緊上前迎戰,怎奈山路狹窄,騎兵施展不開,被張飛的步兵殺得大敗。張郃撥馬逃跑,後麵張飛急追。張郃棄馬上山,尋了小路逃走。張郃身邊就剩十幾個人,逃回了漢中。