楊任原本就是當年漢中太守張魯麾下的大將,王平、程郁也曾在漢中為將,三將都熟知漢中地理,當下為了迷惑蜀漢的漢中太守閻芝,眾人兵分兩路,一路由楊任、申耽率領,由石泉進擊龍亭。一路由王平、程郁率領,出西鄉走小道繞擊城固,抄擊閻芝的后路。
閻芝知道如今自家大軍分路進攻武關、南郡,劉賢的兵馬極有可能會反過來襲擊漢中,因此也早就準好了準備,龍亭正是漢水道進入漢中盆地的咽喉之處,閻芝將麾下三千大軍盡皆部署在這里,建立營壘,嚴陣以待。不過楊任也非善茬,在出兵之前早已經封鎖了狹窄的漢水,蜀漢的探子無法過來,查探不到漢軍的準確進兵時間、進兵路線和兵力規模。
在這種情況下,閻芝能做的就是不斷加固營壘,耐心等待漢軍可能的攻擊。
楊任、申耽的進攻并未出乎閻芝的預料,盡管楊任兵多,盡管漢中百姓稀少,閻芝無法征調太多的民夫前來助戰,但依托著堅固的營壘,閻芝依然有信心將楊任的兵馬阻擋在漢水道之中。
雙方每日大戰,戰局果然如閻芝預料的一般,相持不下,漢軍根本無法打開局面。
如此對戰了十余日,閻芝正盤算著楊任什么時候將會糧盡退兵,就聽身后城固城中逃來了幾名敗兵,向閻芝稟告了一件大事。
漢軍王平、程郁所部五千兵馬突然襲擊城固,城池丟了。
閻芝聞訊大驚失色。城固在龍亭之后,城固丟失,也就意味著閻芝所部被漢軍包圍了。而且尤為重要的是,因為漢中百姓當年被劉賢、曹操各自遷移走了一大批,導致偌大的漢中盆地人口不足萬戶,分散在各城各鄉之間,短時間內很難組織起來。且不說如今身為漢中太守的閻芝本人在龍亭,即便閻芝此時仍舊在南鄭,憑著城中的千余戶居民,也難以抵抗王平等人的大軍。
尤其重要的是,隨著關隴被蜀漢奪取,陽平關成了內部關卡,守軍極少,僅有校尉韓禎率領著五六百人把守。萬一王平襲擊陽平關得手,那么關隴、益州的兵馬想要增援漢中可就萬分困難了。
當下閻芝心急如焚,急欲分兵回救陽平關,只要陽平關還在手中,那么漢中便遲早都能奪回來。反之,倘若陽平關丟失,僅憑自己手中這三千人也根本無法守住漢中。
閻芝權衡之后,于當夜在營中虛插旌旗,又留下數十名老兵照看著營火,時不時地敲擊一下金鼓,做出大軍仍舊在營的假象,隨后率領麾下兵馬棄了龍亭,急速往西撤退。
然而王平卻也不是善茬,他也知道陽平關對漢中的重要性,在拿下城固之后,王平便即自領一千精兵改做蜀軍裝束,隨后急速往陽平關而去,留程郁率領著四千兵馬往東來抄截閻芝之后。
閻芝退到洋鄉時,正與程郁的兵馬相遇,雙方便在黑夜之中混戰一場,蜀軍在撤退途中遭遇襲擊,心中慌亂,最終大敗。黑夜之中,蜀兵四散潰逃,閻芝率領敗兵逃到興勢山中,至天明之后招聚散兵,復得了千余人。
當下閻芝一邊再次派人向長安、陽平關等地告急,一邊率領敗兵繞道往陽平關而去。
程郁通過夜戰擊潰閻芝之后,復分兵接應了楊任、申耽進入漢中,分申耽把守城固,堵塞駱儻道,楊任、程郁則合兵一處,轉而攻擊南鄭、褒中、沔陽等地。