起兵
建安十六年(公元211年)三月,曹操傳令,讓鎮守長安的鍾繇討伐張魯,並派夏侯淵出河東會合鍾繇。此時,夏侯淵和徐晃剛剛平定太原商曜的叛亂,軍隊可以沿汾河出河東。討伐張魯,將有可能經過關中諸將馬超等人的防地。高柔為此提醒曹操:「大軍西出,韓遂、馬超等必會懷疑是襲擊自己,必定互相煽動。宜先平定三輔(關中),三輔(關中)平定了,漢中只要傳上檄文便可平定了。」曹操未予理睬。
關中各將果然產生懷疑,馬超、韓遂、侯選、程銀、楊秋、李堪、張橫、梁興、成宜、馬玩(合稱「關中十將」)等十數部軍起兵反抗,集結了十萬羌、胡、漢人混雜的軍隊,屯於潼關,準備進攻,弘農、馮翊多個縣邑起兵響應,百姓都從子午谷逃入漢中。
後人多認為,曹操就是要逼反那些表面上遵奉朝廷,實際上是各行其政的關中諸將,為名正言順地剿滅他們製造借口。可以說,從一開始,曹操就是有預謀的。
曹操派遣曹仁督各將領前往抵擋,敕令他:「關西軍精明強悍,只要堅守,不要和敵人對戰。」秋七月,曹操留曹丕守鄴城,親統大軍西征, 許多人都認為:「關西兵強,擅用長矛,如不是精選的前鋒,則不可以抵擋了。」曹操卻認為:「戰爭的主動權在我,不是在敵人。敵人雖然擅用長矛,我便令他們不能刺,各位看著吧。」
對峙
八月,曹操大軍經函谷朔黃河西進,到達潼關。此時曹軍的糧草由洛陽經函谷供應。潼關雖險,卻不是一夫當關,萬夫莫開的狹關,須以大軍方可屯守。正因為潼關有此種特點,曹操用大軍緊逼潼關,擺出非要從潼關進入關中不可的架勢,馬超等關中聯軍的注意力才能被牢牢地吸引在潼關的防守上。
關中各部不斷向潼關增兵,曹操聽說,不憂反喜。事後各將領不明,問他當初何以如此高興,曹操解釋說:「關中道路長遠,若果敵人各依著地勢防守,就算出兵攻打,沒有一、二年也不可平定。現今他們全部到來結集,人數雖多,但互相都不歸服,聯軍中無一個統領,一舉便可以消滅他們,比起他們各自防守,現在容易多了,所以我便感到高興。」
經過一段時間的相持,眼見聯軍的所有力量都已集中到潼關,曹操暗中卻派徐晃、朱靈率步騎四千人渡過浦阪津,據河西為營,準備接應曹操大軍由河東進入河西。曹操曾問徐晃如何可入關中,徐晃說:「您已帶大兵到此,而敵人不再分兵守衛蒲阪,可知他們缺乏謀略。請給我一支精兵,渡過蒲阪津,作為大軍的先導,截斷敵人的後路,就可擒住他們了。」曹操至同意此舉,並派徐晃、朱靈率四千精兵從蒲阪津(今山西永濟、陝西大荔朝邑之間黃河渡口)乘虛渡過黃河。
閏八月,曹操親自率軍從潼關東面的渡口北渡黃河,先將大軍移至北岸,只有曹操和許褚等虎士百餘人留在南岸負責斷後。馬超立即率萬多人襲擊,亂箭齊發,矢下如雨。但曹操仍然在胡床上不動,許褚見勢危,立刻扶曹操上船,船夫卻被流矢射殺,許褚左手舉著馬鞍作盾,為曹操擋箭,右手則拚命撐船,數次受害。駛了四、五里,馬超軍仍不斷追趕、射箭,大軍都不知曹操安危,十分擔心。這時校尉丁斐命軍隊放走牛馬,用以作餌引敵人,關中聯軍果然放棄追剿,趕緊追捕牛馬,曹操最後才成功渡河。 各人見曹操平安無事,悲喜交集,但曹操卻大笑:「今日差點被小賊困住呀!「
徐晃剛剛從浦阪津渡過黃河,還沒來得及建立寨柵,當夜梁興即領步騎五千多人前來攻擊,被徐晃擊敗。 曹操與徐晃約好,在曹操從潼關北渡時,徐晃方才能從浦阪津西渡黃河,否則,消息過早洩露,徐晃會遭到關中聯軍的攻擊。馬超看到曹操北渡,自然知道曹操是想從浦阪津渡河進入關中,遂派梁興帶五千多人前去搶佔浦阪津渡口西岸,通常情況下,這五千人足以阻擋曹操渡河。但馬超沒有料到的是,徐晃已經搶先佔領了浦阪津渡口西岸。經長途急行軍趕到浦阪津渡口的梁興軍,自然不是以逸待勞的曹軍對手。待消息經幾百里路傳回潼關時,馬超再想派大軍去重新奪回渡口,時間已經來不及了。
曹操事後解釋時說:「賊兵佔據潼關,如果我軍進入河東,賊兵必將帶兵守住黃河各渡口,我們就不能渡到河西;我故意重兵逼進潼關,賊兵全力來守南邊,西河的防備空虛,因此徐晃、朱靈二將才能輕易佔領西河。在此之後我帶大軍北渡黃河,賊兵不敢與我們爭奪西河,是因為有他們二將的軍隊。」 西渡黃河後,此時曹軍的糧草改由河東經浦阪津渡口供應。曹操沿河連車樹柵為甬道向南推進。馬超退屯渭口。曹操又多設疑兵,吸引馬超的注意力,暗中卻從黃河把船駛入渭河,連夜用船搭起浮橋,分兵在渭水南岸紮營。在渭水南岸立營的過程中,由於沒有合適的建築材料,加之屢受馬超騎兵的突擊,一時難以完成立營的工作。後乘天氣突然爆冷,曹操夜裡渡兵在南岸澆築起凍沙城。天明時,凍沙城建築完畢。關中聯軍乘夜攻營,被曹操伏兵所破。
九月,曹操大軍全部從容渡過渭水,進駐渭南的營地。至此,曹操已經完成了全面攻擊的準備。 馬超等曾數次前往挑戰他,曹操又不答應,只守不攻。
當時,曹操曾與韓遂、馬超單馬會面,曹操只帶著許褚前往。馬超想持其力大,乘機上前捉拿曹操。不過馬超聽過許褚的勇武,便問曹操:「公的虎侯在嗎?」曹操用手指一指許褚,許褚瞪著馬超,馬超於是不敢妄動,於是雙方各自退去。
離間
由於韓遂、馬超等在春季三月時,就在潼關屯集十萬大軍,加之用於長途輸送糧草的人力,關中各部,當年的農業生產幾乎全廢。此時秋季已過,冬季將臨,關中各部卻徵收不上來新糧,全軍有斷炊之虞。
於是關中聯軍為免作持久戰,只好割地、送子質請和。謀士參謀賈詡認為可以假裝答應他們,曹操問他有何計策,賈詡說:「離間他們就可以了。」曹操明白他的意思,便應許聯軍的請求。
韓遂作代表與曹操相見。曹操與韓遂父親在同一年被推薦為孝廉,又與韓遂是同輩,曾有交情。當二人會面時,在馬上不談軍事,只說當年在京都的舊事,拍手歡笑。曹軍又列出五千鐵騎作十重陣,精光耀日,聯軍驚訝,紛紛前來看曹操是什麼人,曹操笑著對他們說:「你們都想看曹某吧!我也只是一個普通人,不是有四隻眼睛、兩張嘴巴,只是較多智謀罷了!」又在一次會晤之中,曹操一反原先一貫示弱於敵的作法,突然列出五千鐵甲騎兵,陣列森嚴,「精光耀日」,關中各軍,無不為之震懾驚恐。
會面結束,馬超等問韓遂:「曹公說了什麼?」韓遂卻回答:「沒有什麼。」馬超等對韓遂的態度十分懷疑,擔心他與曹操私下聯繫。過了幾天,曹操給韓遂書信,信中卻故意在多個言詞上塗塗抹抹,改來改去,就像是韓遂改動一樣;馬超等疑心愈來愈大,曹操便趁此時與聯軍約定決戰。
決戰
離間計剛剛施用完畢,曹操立即與馬超、韓遂等約期會戰,而馬超、韓遂等也急於結束對峙狀態。曹操先以輕兵前往挑戰,大戰了很久,曹軍以虎豹騎夾擊聯軍,聯軍大敗,曹軍斬殺掉成宜、李堪等人。結果韓遂、馬超、梁興敗走涼州,楊秋則前往安定,程銀、侯選南入漢中投靠張魯。渭南之戰到此結束。
在這場驚天動地的大決戰中,關中諸將的武裝力量基本損失殆盡,從此結束了關中軍閥割據的局面,關中各郡進入了朝廷直接掌控的範圍。不久,韓遂、馬超等依靠羌、氐二族以及張魯的力量在涼州作亂一年餘,但又被夏侯淵等擊破,隴右、涼州平定。