自从汉献帝东迁许昌后,战火东移,长安等地保持了相对的平静。李催在建安三年(公元198年)兵败被杀,董卓的余党彻底覆灭。韩遂马腾等虽然一时势不两立互相火并,在朝廷的反复劝解下,马腾也不是韩遂的对手,顺势于建安二年左右和解。曹操在官渡赤壁前后为了解除自己的后顾之忧,对关中的韩遂马腾等人采取了安抚的政策,并受到了相当的效果。官渡之时,镇抚关中的钟繇在关键时刻向曹操前线运送了两千多匹军马。鉴于当时的形势,这多半是关中诸侯的贡献。后来袁尚的河东太守郭援骚扰曹操后方时,又是钟繇率领马腾等人将这个外甥击斩。战斗中马超腿部中箭而轻伤不下火线,庞德则亲自斩杀郭援。建安十三年(公元208年)曹操南征之前,征调马腾为卫尉,马腾虽然有些犹豫但还是来到邺城“安居乐业”。曹操在赤壁吃了败仗,但北方的根本没有损失。第二年韩遂也在心腹骁将阎行(当年韩遂马腾混战时,就是他差点要了马超的命)的劝说下送儿子来当人质,顺便还搭上阎行的父母。这样,至少在形式上曹操统领着关中。然而,曹操对关中的统治毕竟是形式上的,那个自从建安二年起就一直为曹操抚镇关中的司隶校尉钟繇连长安都到不了,只能屈居弘农遥领关中。同时,关中军阀林立,韩马的臣服还不能使曹操完全安心。
建安十六年(公元211年),太原人商昭等占据大陵城反叛,曹操任命夏侯渊代理征西将军一职,率领徐晃等率军北讨。夏侯渊等人先后攻破二十余屯,包围并攻下了大陵城,破杀商昭平息了叛乱。司隶校尉钟繇想趁热打铁,请求以讨伐汉中的张鲁为名,进军关中。一旦骗到了关西诸侯的信任,就来个图穷匕现,胁迫关西诸将全部送质任子到邺城,巩固曹操在关西地区的统治。已升为尚书的关西通卫觊和丞相仓曹属高柔在分析了关西形势后,反对这次行动。他们认为那些诸侯都是小人得志,没有什么雄心大志。如今给他们几顶乌纱帽,他们心满意足不会有反叛的举动。然而一旦动兵,他们并不完全是傻瓜,将怀疑曹操的动机,恐怕将招致祸乱。然而,曹操同样不满足于关西仅仅名义上的归附,认为不妨让钟繇试一试,没有听从卫觊高柔的意见(注1)。三月,曹操下令夏侯渊与钟繇合军西进,徐晃率部留在汾阴抚镇黄河东岸。
对夏侯渊大军,关西诸将果然起了疑心。钟繇暗地里离间本来就不和的马超韩遂等,想不到弄巧成拙,正在狐疑的关中诸将因此明白曹操真正的枪口是对着自己,又惊又怕。马超于是联合杨秋、李堪、成宜、梁兴、侯选、程银、马玩、张横等一齐起兵反叛,又劝说老大韩遂不要顾虑邺城的儿子入伙(注2)。韩遂的骁将阎行劝阻(阎行的父母亦在邺城),但韩遂深感自身受到威胁,不愿束手就擒决意起兵。韩遂在凉州经营多年,从董卓打到曹操,实力最强资历最老,被联军推举为都督,成为了首脑。
曹仁刚从江陵撤下来不久,正失业的时候,曹操就命令他代理安西将军,率领诸将拒守潼关地区。韩遂、马超率关西联军十部号称十万,分据潼关及附近渭河口黄河西岸一带,人多势众。曹操明白单靠曹仁的力量无法取胜,命令他坚壁清野不要轻易交锋,同时积极准备亲征。他任命当时任五官中郎将的长子曹丕留守邺城,并留下程昱等人辅佐。七月,曹操亲自出兵。出征前,他的手下议论纷纷,都认为关西的士兵擅长使用长矛投枪锐不可当,不带领精兵猛将难以抗衡。曹操却满不在乎:“打不打决定于我,而不是决定于他们。他们的长矛虽然厉害,但我会让其毫无用武之地。你们等着看好戏吧。”
八月,曹操亲率大军到了潼关,和西凉联军隔着潼关扎营,谁也不能越雷池一步。曹操召集部下商量对策,徐晃建议以主力牵制住敌军,把他们的注意力都吸引到南边潼关后,自己引别部暗渡北部的蒲坂津,从河西渭北迂回渭南。这个建议正中曹操下怀,他立即命令徐晃、朱灵等率部夜渡蒲坂津。与此同时,马超也看到了蒲坂津的危险,劝韩遂未雨绸缪:“我们先在渭河北岸的蒲坂津口立营防备曹军西渡,估计不到二十天,他们的军粮就支持不住了,那时曹军一定被迫退走。”韩遂却说:“让他西渡,来个半渡而击,难道不是更好吗?”马超心想,嗯,也有道理吧,就不再坚持。韩遂听不懂马超半途弃的这个计策,曹操却听懂了。他感叹地说:“马超不死,我死无葬身之地。”就这样,徐晃没有遭遇任何抵抗率四千人马先渡到黄河西岸,趁夜色垒营。防备冯翊的梁兴听到消息后立即率军五千奔袭,但这个马后炮却不是宿将徐晃的对手,夜战中被击退。曹军终于在黄河西岸立住了脚。
闰八月,曹操率河南岸的大军准备渡黄河北上蒲坂。前军渡过,曹操自己率领后军还在南岸悠哉游哉。马超等的就是半渡而击的好时机,当即带着一万多人趁机追杀过来。曹操当时还坐在胡床上不以为然,许褚、张郃等赶忙将他拖入船中。河水湍急,曹操又是匆忙逃命,一不小心被冲到下流四五里的地方。关西兵边追边射箭,箭如雨发。曹操部下争着渡河,都想往曹操的船上爬。曹操的船看看快要沉没在涡流中时,许褚右手执刀斩杀掉入河中攀船求生的人,重演了汉献帝逃命时的一幕。同时,他左手举马鞍保护曹操,船工被乱箭射死后右手接过船棹拼命摇。校尉丁裴看到曹操危险,立刻将牛马辎重驱散。关西兵军纪散漫劫掠成性,于是大抢特抢,忙着抓牛羊再没有“闲工夫”去抓曹操,这只被煮得半熟的鸭子终于飞走。黄河北岸的将领们看到曹操九死一生惊惶失措,等看到曹操上了岸,又悲又喜,曹操大笑着说:“今天差点被这些臭小子们抓住!”这就是三国演义里所说的夺船避箭及后出师表里所说的殆死潼关,但割须弃袍就纯属艺术创作了。
然而,曹操虽然表面上窘迫,实际上却达到了战略目的。有徐晃朱灵的人马做掩护,韩遂马超无法阻止曹操渡河。九月,曹操大军如愿到达黄河西岸,从此便轮到关西联军唉声叹气了。在河西,曹操以箱车为栅,沿黄河西岸筑甬道通向渭河口,一步一步向前挤压。关西联军的精锐骑兵也拿这样的一只巨大的乌龟无可奈何,被迫从东线潼关退到渭河口。曹操蚕食了关西联军在黄河西岸的地盘后,得寸进尺,又要南渡渭河。他沿渭河多设营垒,虚张声势,假装要从另处南渡渭河。分散关西军的注意力后,实际却暗地用运兵船开入渭河口,以船为基筑成浮桥要渡过渭河。但是,每次南渡筑营,都被关西骑兵冲退。没有合适的防护手段,步兵确实挡不住骑兵的冲击。曹操想修筑寨垒城墙,但当地土质沙化,垒不成。正无计可施愁眉苦脸的时候,娄圭向曹操建议说:“今年天气寒冷,可以先堆起沙土,再用水浇灌,趁天寒一夜可冻土成垒。”曹操立刻大举制作缣囊装水,分兵在半夜里南渡,一夜功夫就建成了城垒(注3)。关西骑兵突袭过来,曹军有了屏障后终于坚守住了营寨,并用伏兵抄后路大败这些不可一世的对手。就这样,曹操步步为营,又在渭河南岸立住脚跟,终于绕过了潼关天险,与关西军对峙于渭南平原上,取得了进可攻退可守的战争主动。
被曹操几乎兵不血刃地挤出了渭河,如此精锐的人马却打得如此窝囊,联军这时感到了曹操的厉害,开始心虚并派人求和。曹操得理不饶人,不但不听,反而加紧将主力渡过渭河。关西的联军也只好硬着头皮应战,陆续集结到了渭河前线。曹操一听说敌人有援兵,就喜形于色,来一部高兴一回。事后他告诉部下:关中这个地方,如果他们依托险阻分拒险阻,那么没有一两年休想成功。而如此布置,人数虽多却互相没有默契,正是把他们打垮一劳永逸解决问题的好机会。联军试图凭借骑兵的冲击力速战速决,曹操又摆出了他的铁车阵,既不应战也不撤兵。面对撤不能撤,打没法打的尴尬处境,原本就算不上同仇敌忾的联军内部矛盾渐渐暴露,议和的呼声抬头。祸不单行,十万大军的后勤也开始成了问题。韩遂等无可奈何,只好再次请求讲和。为表示诚意,主动提出割让黄河以西的地盘并送儿子为人质。韩遂的儿子马超的老子都在邺城,可你们不是一样造反了吗?关西诸侯开出的实际上是已经没有说服力的条件,却还妄想曹操能够接受。然而,这次曹操却没有置之不理。贾诩认为可以先假装同意麻痹敌人,然后加以离间。曹操心有灵犀,于是假装同意讲和。双方的首领韩遂曹操两人按照约定在战场上见面后,曹操却只谈老交情,拍手大笑,别的什么也不说。韩遂后面的马超想凭自己的武力突前擒杀曹操,看到曹操后面的许褚虎背熊腰全副武装恶狠狠瞪着自己,不敢动弹。西凉的人马大多没见过曹操,都想亲自看一看这位曹丞相的尊容,前拥后挤队伍顿时混乱不堪。曹操笑着说:“你们想看曹操吗?曹操也是人,并没有四只眼两张嘴,只不过多了点智谋。”曹操自从西征以来,从不曾大打出手,而总是用战车里三层外三层地把自己的营寨裹得严严实实。这样,剽悍的关西的士兵大都以为曹操是个胆小鬼。然而,眼看就要和平了,曹操这时却突然列出了五千铁甲骑兵,军容严整刀枪映日。关西士兵受不了如此大的反差,又惊又怕:曹操原来果然厉害,名不虚传!幸亏现在开始议和了。先害怕后泄气,曹操就这样瓦解了对手的斗志。
曹操和韩遂唠叨了半天才回去。马超等人看到曹操走了,就围着韩遂问:“曹操说了些什么?”韩遂这才回味过来,曹操就是海阔天空地吹了一通牛,什么正经的也没说,就老实回答:“他什么也没说。”这样的老实,理所当然地被马超等人当作了不老实:你明明和他交头接耳了那么半天,什么也没说?莫非你这个老家伙有所隐瞒?
几天后,曹操又派人来给韩遂送信。韩遂打开一看就愣住了:这写得是什么呀,到处乱涂乱画,曹操把自己的涂鸦送来了?正狐疑间,马超等人听说后,也来看看曹操写了些什么。韩遂看不懂的信,马超等人一下子就看懂了:韩遂肯定趁我们不在时,将信给改了!韩遂大叫冤枉,却越描越黑。联军内部从此充满了互相猜忌的气氛。这样的内部气氛中,提倡议和的家伙随时都会被扣一顶通敌的帽子。和谈是谈不成了,那就决一死战!
两军终于决战于渭河南岸。曹操先用轻兵应付。经过一段时期的混战后,看看双方体力、士气下降,对手的锐气被磨得差不多时,突然投入精锐骑兵猛冲猛打。军心涣散、互相猜忌的关西联军哪里还抵挡得住这样一支生力军的冲击,立刻被冲垮一败涂地。曹操临阵斩杀了成宜、李堪等人。关西军溃散后四分五裂,韩遂、马超等西走凉州,杨秋北奔安定,程银、侯选南入汉中,梁兴遁入鄜城山中打游击。十月,曹操北上包围安定,杨秋走投无路,终于举起了白旗。曹操并没有执行他那“城围而后降者不赦”的军令,而是恢复了他的爵位,让他继续留在安定安抚当地人民。
这个时候,河北发生了农民起义,声势相当浩大(注4)。曹操听说后,无法将剩勇追穷寇,只好回兵**,留夏侯渊镇守长安。至此,虽然韩遂马超等人还未被消灭,长安一带已经被大致征服,名副其实的成为了曹操的势力范围。曹操在建安十七年正月回到邺城,东汉朝廷给了他赞拜不名,入朝不趋,剑履上殿的权力,有如当年的萧何。随后,马腾在建安十七年五月被处死。
注1有关曹操的动机,向来有不同的意见。那种认为曹操不满于名义上的统领而有意实际上平定长安一带,故意派兵将韩遂马超等逼反后名正言顺地加以剿灭之说也是很流行的。
注2魏略中记载,马超对韩遂说,“前钟司隶任超使取将军,关东人不可复信也。今超弃父,以将军为父;将军亦当弃子,以超为子。”注3当时不过是农历九月,天气未必会如此寒冷,因此裴松之对这一段记载有怀疑。但三世纪初中国进入小冰期,气候偏冷,或许有此可能。吴书中也记载娄圭“从破马超等,子伯(娄圭字子伯)功为多。曹公常叹曰:‘子伯之计,孤不及也。’”。因此,这一段基本上是可信的。
注4曹操回到邺城前,曹丕在程昱的筹划下,已经先派别的将领**,将其基本扑灭。最后一千多名起义军请求投降时,程昱力排众议,制止了别人的“城围而后降者不赦”的教条,收服了这股俘虏基本稳定了局势。