双方在阳平关一带展开了周旋,交战的区域越来越广。刘备虽然在气势上占有优势,但毕竟总体实力不如曹操,所以这一仗打得也异常艰苦。据裴松之为《三国志·法正传》作注时所引史料,有一次刘备形势不利,应该赶紧撤退,可刘备不肯,没有人敢劝。此时矢如雨下,法正急了,一下子挡在刘备身前。刘备喊着法正的表字,叫道:“孝直避箭!”法正不避,对刘备说:“明公亲当矢石,况小人乎?”刘备这才冷静下来,对法正说:“孝直,吾与汝俱去。”于是撤退。
还有一次,刘备屯兵在山上,派养子刘封下来挑战,曹操一看大怒。《三国志·曹彰传》注引《魏略》记载,曹操骂道:“卖履舍儿,长使假子拒汝公乎?待呼我黄须来,令击之!”刘备出身穷苦,父亲早逝,小时候曾随母亲贩履织席,所以曹操骂他是“卖履舍儿”,“舍儿”意指被遗弃的孩子。刘封并不是刘备的亲生儿子,是他收的养子,所以曹操称其为“假子”。曹操不仅“揭短”,更不服气,要派人去叫“黄须”来战刘封。
“黄须”指的是曹操的儿子曹彰。曹彰是卞夫人为曹操生的第二个儿子,年龄比曹丕小,比曹植大。曹彰从小刚强坚毅,与曹丕、曹植偏于“文科”不同,曹彰喜欢阴阳家和谶纬术数,也喜欢兵法,能左右开弓,对剑术很精通,百步之内能断人的胡须和头发。乐浪郡献来一只猛虎,用铁笼关住,连那些大力士都不敢正眼去看。曹彰无惧,进了笼子,抓住虎尾缠在自己胳膊上,令猛虎贴着耳朵不敢出声,大家都佩服他的神勇。建安二十一年(216),曹彰被封为鄢陵侯。就在建安二十三年(218),北方的代郡有乌桓族无臣氐等造反,曹操任命曹彰担任北中郎将、代理骁骑将军,前往平乱。在曹操眼中,曹彰是最有军事才干的一个,不过仍告诫他“居家为父子,受事为君臣” (《三国志·任城威王彰传》) ,做什么事都要按王法来办。但是,曹彰压根不用父亲担心,这一仗打得很漂亮。曹彰带兵进入涿郡境内,这时叛军有数千骑兵杀到,而自己一方的人马并未聚集起来,曹彰身边只有步兵一千来人,骑兵只有数百名。面对危险,曹彰很冷静,他没有硬打硬杀,而是采取田豫的计策固守要隘,敌人进攻无果后退去。这时,增援部队陆续赶到,曹彰下令追击,他身先士卒,冲杀在最前面,不断射箭,敌兵应声而落,激战半日,曹彰铠甲上也中了数箭,但仍然意气风发,指挥人马一直追到桑乾县,这里距代郡只有二百来里的路程了。曹彰的手下们都认为长驱直入,已是人马劳顿,应该暂停攻击,休息一下再说。但曹彰认为敌人逃得还不远,停下来就丧失了战机,于是上马,又追击一日一夜,终于追上了敌人,斩杀及俘虏敌兵数千。为了鼓励将士,曹彰下令按照比平常标准多一倍赏赐将士,大家虽然很劳累,但“无不悦喜”。此战,鲜卑部族首领轲比能受乌桓人邀请前来助战,但他没有立即参战,而是率数万人在一旁观察。看到曹彰如此生猛,他于是向曹操请服,北方的局势重新得以安定。代郡建边的事已经办完了,曹操让人去唤曹彰来汉中前线。曹彰接到命令后昼夜西行,往这里赶来。曹操与刘备在汉中继续互攻,曹操对这里的地形和气候条件似乎不怎么适应,至少不喜欢,上次虽然在汉中得手,但实属侥幸,从内心里他巴不得早些离开这个地方。
在此期间,曹操听到的唯一好消息是老对手,同时也是老同事和老朋友的凉州军阀韩遂死了。韩遂原名韩约,早年闻名于凉州,后被羌胡叛军劫持,并推举为首领,于是以诛杀宦官为名举兵,先后与皇甫嵩、张温、董卓、孙坚等名将抗衡,后接受朝廷招安,拥兵割据一方长达三十余年。韩遂与马腾结为异姓兄弟,二人齐名于凉州。建安十六年(211)曹操发起潼关之战,韩遂大败,散失部属,奔还凉州。郭宪是西平郡西都县(今青海省西宁市)人,为本郡豪族,东汉建安年间任西平郡功曹,以仁笃为一郡所归慕。韩遂西返,众人都想抓韩遂向曹操邀功,郭宪责备众人,将韩遂保护起来。韩遂生病而死,田乐、阳逵等立即斩了韩遂的人头,准备送给曹操。因为郭宪名望很大,阳逵等想让郭宪也具名,郭宪不肯。阳逵等人把韩遂的首级送到曹操这里时,曹操正在汉中。曹操素来知道郭宪的名望,但看了文书,发现郭宪的名字不在其中,因此询问。阳逵等据实以告,曹操叹其志义,上表将郭宪、阳逵等人都赐爵关内侯。其后,郭宪官至曹魏武威郡太守,于魏文帝黄初元年(220)病逝。
上面这件事记载在《三国志·王修传》注引《魏略》中,但其中提到的人是“韩约”,而不是韩遂。其实,韩约是韩遂的原名,从其记载的内容看,此“韩约”也一定是韩遂。原记载没有明确时间,但提到曹操“攻汉中”,于是有两种可能,一种是建安二十年(215),一种是建安二十四年(219),这两年曹操都在汉中作战。
曹操与刘备相持了一个多月,刘备的总体战略是据险死守,跟曹操拼起消耗。这样一来,曹军的后勤就成了问题。由于吃不饱饭,曹军士兵有不少逃跑开小差的,《资治通鉴》有“操与备相守积月,魏军士多亡”的记述。还有些投降到了敌人那里,让曹操更苦恼。蜀汉后来有一个很有名的将领叫王平,多次随诸葛亮北伐,他原来就是曹军的将领,正是在这个时候投降刘备的。王平是巴西郡宕渠县人,巴中部族首领杜濩、朴胡等人投降了曹操,到洛阳拜谒,王平跟着他们一起去的,被曹操提拔为校尉。曹操此次再征汉中,王平随军,但是又投降了刘备,被刘备提拔为裨将军。
眼看短时间内无法取胜,曹操萌生了放弃汉中的打算。《三国志·武帝纪》注引《九州春秋》记载,有人来请示当天夜里的口令,曹操顺口说了一个“鸡肋”,大家都一脸茫然,不知何意。随征的丞相主簿杨修听到后就开始收拾行李,大家很惊讶,问缘故,杨修说:“夫鸡肋﹐弃之如可惜﹐食之无所得﹐以比汉中﹐知王欲还也。”杨修的理解是正确的,曹操实在不想把主力部队长期集中在汉中这个大山中的小盆地里,合肥一线的孙权,襄阳一线的关羽,还有北方的公孙氏及乌桓人,哪一个都不让他省心。再者,近一两年来,各地又频频发生叛乱活动,曹操已有心力交瘁之感,于是下令从汉中撤退。
建安二十四年(219)五月,曹军全部撤出了汉中地区。汉中再次易手,这块战略要地在曹操手中前后还不到三年。此次汉中之战,胜负一目了然:曹操完败于刘备。但在具体战果方面,《三国志·武帝纪》中的说法是曹操“引军还”,言下之意曹军的直接损失并不大,是主动撤退的。真实情况是否如此呢?诸葛亮曾于蜀汉建兴元年(223)九月对外发布过一篇《正议》,里面提到过在此次汉中之战中曹军的损失情况。那时刘备刚刚去世,蜀汉内外交困,曹魏方面公开向后主刘禅和诸葛亮喊话,进行招降,诸葛亮写这篇《正议》就是回答对手的招降,同时鼓舞蜀汉军民的士气。其中写道:
及至孟德,以其谲胜之力,举数十万之师,救张郃于阳平,势穷虑悔,仅能自脱,辱其锋锐之众,遂丧汉中之地,深知神器不可妄获,旋还未至,感毒而死。
按照这个说法,曹操几乎全军覆没于汉中,只有曹操侥幸得脱。当然,这是诸葛亮的说法,有对内“打气”的成分,不足以全部采信。到了曹魏正始五年(244),那时诸葛亮已去世十年之久,曹魏方面由大司马曹爽、太尉司马懿共同辅政,曹爽为树立个人在军中的威信,策划另一场汉中战役,妄图一举夺取仍在蜀汉控制中的汉中地区。《三国志·曹爽传》注引《汉晋春秋》记载,司马懿反对贸然向汉中进军,他曾给夏侯玄写信,希望其对曹爽加以劝阻。在这封信中,司马懿写道:
《春秋》责大德重。昔武皇帝再入汉中,几至大败,君所知也。今兴平路势至险,蜀已先据;若进不获战,退见邀绝,覆军必矣!将何以任其责?
司马懿认为曹操从汉中撤退前已“几至大败”,言下之意虽不是“大败”但也是败了,而且败得不轻,并且说“君所知也”,说明这一情况并不是秘密。如果曹军是顺利且安全地撤出汉中的,司马懿自然不会这样说。司马懿的说法虽然不能直接证明诸葛亮在《正议》中的结论,但曹操在汉中打了败仗,撤退得也很仓促,应该是不争的事实。
这场汉中之战是曹操与刘备这两个老对手最后一次直接交手。曹操和刘备都是汉末三国时代的杰出人物,比较起来,二人互有优劣。曹操的军事才能很突出,被誉为当时的孙膑、吴起,他一生征战三十多年,“机变无方,略不世出” (《三国 志·武帝纪》) ,尽管也打过不少败仗,但以胜仗居多,打过一些苦仗、漂亮的仗,除官渡之战外,潼关之战也是他最经典的战例。曹操善于出奇兵,经常身先士卒,是将才,也是帅才,本身也是一流的谋士,其在军事上的综合成就是汉末三国时代无人能比的。曹操在外交方面总体上做得也不错,源于他心胸较为开阔,能兼容并收,除了用武力消灭群雄外,也注意用和平手段解决问题,在处理关中、辽东、泰山、汉中等边缘地带方面,他采取了柔性的、更为灵活的手法,成为军事手段的补充。相比较而言,曹操在政治方面显得有些被动,始终没能处理好与士大夫集团的关系。一方面,缘于他的出身,尽管他努力撇清与官宦家庭的关系,但毕竟不如世族出身的袁绍、宗亲出身的刘表和刘焉等人能占到政治上的便宜;另一方面,曹操“奉天子以令不臣”,这既有有利的一面,但也有不利之处,那就是与汉室之间的关系难以处理,容易遭受诟病,所以曹操在政治上一直很被动,不仅生前如此,身后也一样。
与曹操相比,刘备最大的长处是会打“政治牌”,他很早的时候就重仁义,后来又注重推崇汉室。在滞留许县期间,尽管政治环境极为恶劣,但刘备仍不愿意阿谀曹操,而是秘密参加了董承等人谋划的政变,虽然没有成功,但表明他是站在汉室一边的。占领成都后,刘备仍尊汉室为正统,这些政治手段比曹操强硬称魏公、魏王来得高明。刘备也是出色的军事家,虽然一生打的败仗更多,但那多是情势使然,是势不如人的情况下只得奔命的结果,不能反映他真实的军事水平。刘备军事生涯的顶峰是这次汉中之战,先是一战夺汉中,后来老对手曹操亲自率兵来救,刘备打得不慌不忙,信心十足,迫使曹操不得不撤军。刘备最大的问题是在外交上,赤壁之战前迫于形势而不得不联合孙权,后在诸葛亮的竭力维护下,孙刘联盟得以保持,但刘备对此似乎没有给予足够重视,结果埋下了祸根,这些隐患在后面将不断暴露出来。
曹操撤到长安后,看到汉中已失,其左翼的武都郡必然难保,于是担心刘备与武都郡氐人部落首领联合起来,以氐人为先锋进攻关中,那样一来,整个雍州刺史部的安全都将受到威胁。为此,曹操招来雍州刺史张既商议对策。张既建议,可以把武都郡的氐人迁到天水和关中一带居住,告诉他们先迁出来的有重赏,到那时候大家都会争先恐后出来。曹操采纳了这个建议,先后从武都郡迁出五万余户氐人,让他们居住在扶风郡、天水郡等地。武都郡百姓恋土不愿远迁,后来,多亏武都郡太守杨阜深得民望,当地百姓自愿随迁。杨阜把郡政府搬到槐里(今陕西省兴平市),他为政清廉,爱民如子,深受百姓敬爱。
雍州刺史部虽然名义上是曹操的势力范围,但内部并不平静,各地的割据势力很多,其中武威郡的颜俊、张掖郡的和鸾、酒泉郡的黄华、西平郡的麹演等势力都很大,他们自称将军,互相攻击。当时有一个名叫许攸的头领,也有一定势力,不肯归服曹操,对曹操多有轻慢。曹操大怒,想立即分兵去讨伐他。这位许攸与曹操的谋士、在官渡之战中立过大功的许攸同名同姓,并且与那位许攸一样,都是很有个性的人。看到曹操动怒,手下都来相劝,认为当前最重要的敌人是刘备,不能分心。但曹操怒气难消,执意发兵。最后,在杜袭的劝谏下,曹操的怒火才稍稍平息,用“厚抚”的办法最终还是让许攸归服了。这件事记载在《三国志·杜袭传》中:
时将军许攸拥部曲,不附太祖而有慢言。太祖大怒,先欲伐之。群臣多谏:“可招怀攸,共讨强敌。”太祖横刀于膝,作色不听。袭入欲谏,太祖逆谓之曰:“吾计以定,卿勿复言。”袭曰:“若殿下计是邪,臣方助殿下成之;若殿下计非邪,虽成宜改之。殿下逆臣,令勿言之,何待下之不阐乎?”太祖曰:“许攸慢吾,如何可置乎?”袭曰:“殿下谓许攸何如人邪?”太祖曰:“凡人也。”袭曰:“夫惟贤知贤,惟圣知圣,凡人安能知非凡人邪?方今豺狼当路而狐狸是先,人将谓殿下避强攻弱,进不为勇,退不为仁。臣闻千钧之弩不为鼷鼠发机,万石之钟不以莛撞起音,今区区之许攸,何足以劳神武哉?”太祖曰:“善。”遂厚抚攸,攸即归服。
除了许攸,颜俊也突然向曹操表示效忠并请求帮助,愿意把母亲及儿子送到邺县作为人质。曹操问张既如何处置,张既说:“颜俊这些人称王称霸,傲慢狂悖,出尔反尔,缺乏信用。在当前局势下,可以挑动他们互斗,以坐收渔翁之利。”曹操采纳了张既的建议,暗中推动这些割据势力之间互斗,只用一年多就收到了效果。内斗中,和鸾杀了颜俊,但又被武威郡人王祕给杀了。随着割据势力不断被削弱,曹操对雍州的统治逐渐加强。