公元二一一年(汉献帝建安十六年),朝廷以曹操世子曹丕为五官中郎将,安排了部下官属。
三月,曹操派了司隶校尉钟繇去讨伐张鲁,另外派征西护军夏侯渊等人从河东出兵,和钟繇汇合。
主管粮仓事务的官员高柔劝说曹操,说如今大兵西征,韩遂和马超一定会怀疑是去讨伐他们的,他二人必定会互相联合,所以应当先平定三辅地区,然后汉中就可以发布檄文平定。
曹操不听。
果然,关中诸将心中生疑,怀疑曹操是用的“假途灭虢”之计,因为讨伐韩遂和马超师出无名,所以借由讨伐张鲁的机会,逼迫韩遂等人叛乱,然后加兵讨伐韩遂马超。(“假途灭虢”指在春秋时期,晋献公向虞国借路去灭虢国,结果,消灭虢国以后,晋国在归途中又灭了虞国)
于是,马超、韩遂、侯选、程银、杨秋、李堪、张横、梁兴、成宜、马玩等十部全部叛乱,一共有十万人马,屯据在潼关(弘农郡华阴县)。
曹操赶紧派了曹仁督导各将领拒敌,并且下令坚守不出。
命曹丕留守邺城,让程昱协助曹丕处理军务,徐宣为左护军,统领各军,国渊为居府长史。
秋七月,曹操亲自领兵去讨伐马超等人,众人都说关西兵善于使用长矛,一定要挑选精兵作为前锋才可抵挡,曹操不听。
八月,曹操兵至潼关,和马超等人交战,曹操亲自与对方急战,另一面早已派了徐晃和朱灵悄悄的带着四千人渡过蒲阪津,占据了河西为营地,然后,曹操从潼关渡河。
由士兵们先渡河,曹操自己和一百多猛将留在南岸断后。
马超知道后,突然带着一万多人来攻,箭如雨下,曹操也能稳坐不动,许褚扶着曹操上船,结果船工中箭而死,许褚左手举着马鞍替曹操挡箭,右手划船。
校尉丁斐放出牛马引诱敌军,西凉军果然上当,一时之间军中混乱,都去取牛马,曹操趁机渡河,然后从蒲阪渡到河西,沿河修筑甬道掩护部队南下。
马超等人在渭口扎营拒敌,曹操多设疑兵,悄悄的用船载着士兵进入渭水,架上浮桥,部队连夜渡过渭水,在渭水南岸扎营。
马超连夜进攻,结果被曹操的伏兵击败,马超只好许诺割让河西地盘,派使者向曹操求和,曹操不许。
九月,曹操继续进兵,所有的部队全部渡过渭水,马超数次挑战,曹操坚守不出。
马超又派人请求割地并且送子入侍求和,贾诩就出了个主意,假装答应他的求和,然后用离间计,激化马超和韩遂的关系。
刚好韩遂约曹操相见,因为他们两人是故交,于是在马上靠近交谈,并没有谈论军事,只是说了一些往事,说到欢快之处,二人拍手欢笑。
当时也有西凉士兵在前观看,曹操笑着说:你们是不是很想看看曹操长什么样子啊,我也是和一般人那样,并没有四只眼睛两张嘴啊,只不过比较有智谋而已啊。
韩遂回去以后,马超等人就询问他,和曹操说了些什么,韩遂回答说并没有说什么,只是叙旧而已,马超等人更加的起疑。
过了几天,曹操又写信给韩遂,在信上多处涂改,马超看了以后更加的怀疑韩遂和曹操勾联。
到了约定的交战日期,曹操与韩遂马超等人大战,先以轻兵慢战,过了很久以后,突然用精兵强将夹击,大胜,斩杀了成宜和李堪等人,韩遂和马超逃奔到凉州,杨秋逃到了安定。
将领们都去问曹操,开始的时候,敌军守在潼关,渭水北面并没有防备,为什么我们不从河东攻打冯翊,反而去守潼关,然后又去渡河呢。
曹操就说了:敌军守在潼关,如果我们直接去河东,他们必定会带兵去守住各个渡口,那么就无法渡过河西了。
所以我大兵压到潼关,敌兵就会集中到南面来,河西就空虚,所以派了徐晃和朱灵很轻松就占据了河西。
然后引兵北渡,因为有徐晃和朱灵二将在河西,敌人无法去河西,渡过渭水以后修筑营地,又不要和敌兵交战,所以他们来求和,我又假意答应,顺从对方的意愿,这是让对方心安而没有防备,同时争取时间给将士们养精蓄锐,再以迅雷之速一击必中,用兵在于变化,不能固守一种方法。
曹操刚刚出兵时,关中各将领纷纷率部前来,曹操反而非常高兴,他说关中路远,如果他们各部分别守住隘口,没有一两年都没办法平定,现在他们集中而来,虽然兵多,但是却没有一个主事人,看似集中,实际松散,一举就可平定。
冬十月,曹操亲自带兵从长安出发,征讨杨秋,围困了安定,杨秋投降,曹操恢复了他的爵位,留他镇抚部下百姓。
十二月,曹操从安定还兵,留夏侯渊屯守长安,以张既为京兆尹,张既安抚流民,修复城邑,百姓很是感念。
韩遂和马超叛乱时,弘农郡和冯翊县许多地方都纷纷响应。只有河东人没有异心,曹操和马超对战时,军粮都是由河东提供的。打败马超以后,还剩下许多余粮,曹操嘉奖了河东太守杜畿,给他加封二千石。