曹操接到张郃的报告,得知夏侯渊被黄忠斩杀,悲愤交加,立即率兵二十万到汉水与刘备决战。刘备得到消息,与诸葛亮商议。诸葛亮说道:“如果能烧毁曹操的粮草辎重,曹操必败。”黄忠请命出战,诸葛亮便命黄忠、赵云一起出战。
黄忠和赵云约定,由黄忠率领前军出战,赵云率领后军接应,如果在约定时间黄忠还没有回来,赵云便率兵前来接应。当天夜里,黄忠悄悄渡过汉水,来到北山曹操的屯粮之处,曹军寡不敌众,弃粮而逃。黄忠正要令人放火烧粮,张郃赶来与黄忠混战,不一会儿,徐晃也赶来助战,黄忠陷入曹军的包围。赵云等到第二天正午,还不见黄忠回来,立即前去接应。率兵杀到北山,见黄忠被曹军围在中央,大喊一声,杀进包围圈营救。徐晃、张郃见赵云勇猛过人,不敢正面交锋。赵云救出黄忠,又救出黄忠部将张著,然后退走了。曹军将士望见赵云的旗号,纷纷逃窜,不敢与赵云为敌。
曹操见赵云救走黄忠、张著,勃然大怒,亲自率兵追赶赵云。这时,赵云已经退回自己的军营,部将张翼见曹军追来,说道:“赶快关上寨门吧!”赵云说道:“不要关门!当初在长坂坡时,我只有一个人,照样杀得八十三万曹军人仰马翻,如今有兵有将,还怕曹操吗?”于是令弓箭手到寨外的壕沟中埋伏,寨内偃旗息鼓,假装设下埋伏的样子。之后,赵云单枪匹马站在营门处,等待曹军前来。
徐晃、张郃追到赵云的营寨前,见寨中悄无声息,正在怀疑,又望见赵云单枪匹马站在营门外,犹豫不定,不敢前进。正在此时,曹操亲自赶到,命令徐晃、张郃杀向赵云。曹军呐喊一声,向赵云冲来,见赵云毫不畏惧,一动不动,又退了回来。赵云见曹兵后退,命令壕沟中的弓箭手放箭,曹军死伤无数。曹操见了,率先拨马撤退,曹军将士见了,纷纷撤退。赵云率兵掩杀,曹军被追到汉水岸边,踩踏和淹死者无计其数。曹操抵挡不住,放弃北山的粮草辎重,退回南郑城中。赵云、黄忠大获全胜,向刘备、诸葛亮报捷,刘备亲自率兵挺进到汉水。
曹操不甘心失败,率大军挺进至定军山以北,又派徐晃为先锋夺取汉水,牙门将军王平自告奋勇,随徐晃出战。徐晃到汉水以后,便下令全军渡过汉水与赵云、黄忠交战,王平说道:“赵云、黄忠不是没有计谋之人,如果现在渡过汉水,便不能紧急撤退了。”徐晃不听,令王平率领步兵为后军,自己率领骑兵为前军,渡河扎营。
黄忠得知徐晃渡过汉水的消息,对赵云说道:“等天黑以后,曹军士气下降,我们再分兵出击。”徐晃在赵云、黄忠军营外整整挑战一天,赵云、黄忠都坚守不战。黄昏时分,徐晃令弓箭手放箭,随后率兵撤退。这时,赵云、黄忠兵分两路杀出,徐晃大败,退到汉水岸边,奋力死战才得以逃脱。回营以后,徐晃责备王平不率兵接应,王平说道:“如果我出兵相救,这座营寨也就丢了。我劝将军不要渡河,将军不听,才导致失败。”徐晃大怒,有意杀害王平。王平看出了徐晃的心意,当天夜里在曹营放了一把火,然后渡过汉水投降赵云。徐晃退回定军山北。
徐晃见到曹操,不说自己战败,只说王平投降刘备的事。曹操大怒,亲自率兵来夺取汉水。赵云、黄忠退到汉水以西,两军隔河相峙。诸葛亮来到汉水岸边观察地形,见上游有几座土山,便命赵云率五百兵士到土山埋伏,听到号炮响起便擂鼓呐喊。第二天,曹操派兵出战,诸葛亮传令坚守不出,曹军只好退回营中。当天夜里,诸葛亮见曹军熄灭灯火,知道曹军休息了,便命人放射号炮。赵云听见号炮响,立即擂鼓呐喊,却不出战。曹军听到擂鼓呐喊声,以为诸葛亮派兵劫营,急忙集合备战,却不见兵马杀来,只得回营休息。曹军刚熄灯,号炮又响,鼓声又响,曹军再次集合出战。这天夜里,号炮声和擂鼓声此起彼伏,曹军不得安睡。曹操无计可施,只好后退三十里。诸葛亮率兵渡过汉水,背水扎营。
第二天,两军在中路五界山前会战。曹操命徐晃出战,刘封出马与徐晃交战,大败而回,曹操挥军掩杀。刘封等退到汉水,旗帜兵器丢得到处都是,曹操见了,立即传令停止追击,说道:“我见刘备背水扎营,恐有诡计;又见兵士随意丢弃旗帜兵器,必有诈谋,不可追击。”曹军刚转过身准备回营,刘备又率兵杀来,赵云、黄忠也兵分两路杀来,曹军大败,退回南郑。刚到南郑城下,得知南郑已经被张飞、魏延攻占,只得连夜逃到阳平关。诸葛亮令张飞、魏延截断曹操的粮道,又命赵云、黄忠放火烧山。
曹操得到张飞、魏延截断粮道的消息,命许褚前去迎接粮队,不料许褚喝醉了酒,不能抵挡张飞的攻势,粮草被张飞劫走了。曹操大怒,亲自率兵与刘备决战。徐晃、刘封再次交锋,刘封又战败,曹操又挥军追击。这时,号炮响起,战鼓齐鸣,曹操怕有埋伏,急忙传令撤兵,刘备率兵四面追杀,曹操大败,退回阳平关。赵云等赶到阳平关下,东门放火,西门呐喊,南门放火,北门呐喊。曹操惊恐不安,弃关撤退,半路上又遭到张飞、赵云、黄忠的截杀,狼狈逃窜,在斜谷界口遇到前来助战的次子曹彰,才停下来。
曹彰字子文,臂力过人,精于骑射,勇猛异常,原本在代郡平定乌桓的叛乱,得知曹操在阳平关遭遇兵败,便赶来助战。曹操得到曹彰的援助,回军继续与刘备交战。刘备得到消息,派刘封、孟达迎战。刘封与曹彰交锋,只三合便被打败,孟达率兵接应。两军正要混战,马超率兵杀来,曹彰大败,退回斜谷界口。
曹操在斜谷界口驻扎好几天,进不能进,退又怕被人嘲笑,犹豫不决。一天,庖官[89]给曹操端来一碗鸡汤,曹操见碗里有一根鸡肋[90],若有所思。正在这时,夏侯惇进帐询问夜间的口号,曹操随口说道:“鸡肋!”夏侯惇便传令三军,以“鸡肋”为夜间口号。杨修得知口号是“鸡肋”,便令随从收拾行囊准备回许都。夏侯惇见杨修在收拾行囊,便询问原因,杨修说道:“我从今晚的口令得知,几天之后魏王便要撤兵了,因此事先准备,以免临时慌乱。”夏侯惇问道:“先生怎么知道魏王有意退兵?”杨修笑道:“鸡肋鸡肋,食之无味,弃之可惜。现在我军不能前进,后退又怕被人笑话,待在这里也没有用处,不如及早回去。”夏侯惇听了,也命部下收拾行囊。全军将士,纷纷收拾行装,等待撤兵。这天夜里,曹操睡不着觉,便在营中散步,见将士们都在收拾行囊,便问夏侯惇原因,夏侯惇又叫来杨修,杨修将“鸡肋食之无味,弃之可惜”的意思向曹操说了一遍,曹操大怒,责怪杨修扰乱军心,将杨修斩首。
原来,曹操早就有杀掉杨修的打算。杨修聪慧过人,总能猜到曹操的心思,因此遭到曹操的嫉恨。有一次,曹操令人建造一个花园,造好以后,曹操在园门上写了一个“活”字,众人都不知道是什么意思,杨修说道:“门内加‘活’,是个‘阔’字。魏王嫌园门太阔。”曹操听说以后,口头上称赞杨修,心里却很不高兴。又有一次,塞北进献给曹操一盒酥,曹操在盒子上写了“一合酥”三个字,杨修见了,打开盒子,将酥与众人分着吃了。曹操问他原因,他答道:“盒子上写着‘一人一口酥’。”曹操大笑,但心里很厌恶。曹操担心有人趁他熟睡时杀他,便对近侍说道:“我喜欢在梦中杀人,我睡着时你们不要靠近我。”一天,曹操睡着了,近侍见被子掉到了地上,便走过去把被子捡了起来,曹操跳起身,拔剑杀死了那位近侍。众人都以为曹操是梦中杀人,只有杨修说道:“魏王不在梦中,倒是近侍在梦中。”曹操听到以后,更加恼怒了。
杨修与曹操的第三个儿子曹植交往密切。曹操打算立曹植为王世子,曹丕听说以后,暗中请朝歌长吴质到府中商议,杨修将此事报告给曹操,曹操派人查看,但中了吴质的计谋,没有发现证据,便怀疑杨修污蔑曹丕。曹操要考验曹丕和曹植的能力,令他们到城外去,却暗中命守门将领不得放他们出城,曹丕被堵在城内,曹植却在杨修的帮助下顺利出城。曹操知道以后,不仅更加憎恨杨修,也不喜欢曹植了。曹操又用国家大事考验曹植,杨修暗中帮助曹植解答,曹操大发雷霆,决心杀掉杨修。这次,曹操终于找到机会,杀掉了杨修。
杀了杨修以后,曹操传令大举进兵。曹军刚出斜谷界口,便被魏延拦住去路,曹操命庞德与魏延交战。正在此时,马超又袭取了曹操的营寨,曹军转而与马超交战。曹操站在高处观看两军交战,魏延突然杀出,直奔曹操而来,一箭射中曹操的人中[91],幸亏庞德奋力死战,才救回曹操。曹操带着伤回到军营,发现两颗门牙都被魏延射掉了,心烦意乱,便下令撤兵了。刘备占领了汉中。
刘备占领汉中以后,诸葛亮、法正等人劝刘备登基称帝,刘备大吃一惊,说道:“我如果称帝,便是造反。”坚决不答应。诸葛亮说道:“如今天下大乱,英雄豪杰都希望辅佐仁德开明之君建立功名,主公拒绝称帝,恐怕会让众人寒心。”刘备依然不答应,诸葛亮便说道:“那就暂时先称‘汉中王’吧。”刘备推辞不过,只好答应了。这年秋天,刘备正式称汉中王,立刘禅为王世子,封诸葛亮为军师,总理军事;封法正为尚书令,许靖为太傅;封关羽、张飞、赵云、马超、黄忠为五虎上将,魏延为汉中太守。
曹操见到刘备给朝廷的奏章,得知刘备自称汉中王,勃然大怒,立即召集文武幕僚商议攻打刘备。司马懿劝曹操联合孙权,令孙权派兵攻打荆州,使刘备首尾不能相顾。曹操便派满宠为使者出使东吴,约定共同出兵攻打刘备,孙权进攻荆州,曹操进攻汉中,瓜分刘备的土地。