过了几十天,三位单于反叛的消息果然传来。曹操任命他的儿子鄢陵侯曹彰代理骁骑将军,派他前去讨伐。曹彰年轻时擅长射箭骑马,膂力过人。曹操告诫曹彰说:“在家我们是父子,接受任务就是君臣了,一举一动都要按王法行事,你要引以为戒!”
刘备驻扎在阳平关,夏侯渊、张合、徐晃等人与他相持。刘备派他的将领陈式等人去截断马鸣阁道,被徐晃击败。张合驻扎在广石,刘备进攻未能攻克,紧急发文书调发益州的援兵。诸葛亮询问从事犍为人杨洪的意见,杨洪说:“汉中是益州的咽喉,是存亡的关键,如果没有汉中,也就没有蜀地了。这是家门之祸,发兵还有什么可犹豫的!”当时法正跟随刘备北上,诸葛亮于是上表推荐杨洪代理蜀郡太守;各项事务都处理妥当,便正式任命他为蜀郡太守。当初,犍为太守李严任命杨洪为功曹,李严还未离开犍为,杨洪已做了蜀郡太守;杨洪又推荐自己门下的书佐何祗有才干谋略,杨洪还在蜀郡太守任上,何祗已被任命为广汉太守。因此蜀地人士都佩服诸葛亮能够充分发挥当时人的才干。
秋季,七月,魏王曹操亲自率军进攻刘备;九月,抵达长安。
曹彰攻击代郡乌桓,亲自冲锋陷阵,铠甲上中了好几箭,斗志更加昂扬;乘胜向北追击,到达桑干河以北,大败乌桓军,斩杀和俘虏乌桓人以千计。当时鲜卑首领轲比能率领数万骑兵观望双方强弱,看到曹彰奋力作战,所向披靡,便请求归服,于是北方全部平定。
南阳的官吏和百姓苦于徭役繁重。冬季,十月,宛城守将侯音反叛。南阳太守东里衮和功曹应余逃出城得以脱身;侯音派骑兵追赶他们,乱箭齐发,应余用身体掩护东里衮,身中七箭而死,侯音的骑兵抓住东里衮返回。当时征南将军曹仁驻扎在樊城镇守荆州,魏王曹操命曹仁回军讨伐侯音。功曹宗子卿劝侯音说:“您顺应民心,举兵起事,远近无不望风响应;然而您扣押了郡将(东里衮),叛逆却没有益处,为什么不放了他!”侯音听从了。宗子卿乘夜翻越城墙跟随太守(东里衮)召集残余军民包围侯音,恰逢曹仁的军队赶到,便共同进攻侯音。
汉献帝建安二十四年(己亥,公元219年)
春季,正月,曹仁攻破宛城,屠杀居民,斩杀侯音,然后回军再次驻扎在樊城。
当初,夏侯渊作战虽然多次取胜,但魏王曹操经常告诫他说:“作为将领也应当有胆怯的时候,不能一味只凭勇气。将领应当以勇敢为根本,但要用智谋来行事;只知道逞匹夫之勇,不过是一个人的对手罢了。”等到夏侯渊与刘备相持超过一年,刘备从阳平关向南渡过沔水,沿着山势逐渐向前推进,在定军山扎营。夏侯渊率军争夺定军山。法正说:“可以出击了。”刘备派讨虏将军黄忠居高临下,擂鼓呐喊发动进攻,夏侯渊军队大败,黄忠斩杀夏侯渊和益州刺史赵颙。张合率军退回阳平关。此时曹军刚刚失去主帅,军中一片混乱,不知所措。督军杜袭和夏侯渊的司马、太原人郭淮收集溃散的士兵,向各军发布号令说:“张合将军是国家的名将,刘备也畏惧他。如今军情紧急,非张将军不能安定军心。”于是临时推举张合为军中主帅。张合出来主持军务,部署军队,整饬阵势,众将领都接受张合的指挥,军心这才安定下来。第二天,刘备打算渡过汉水进攻;众将领认为寡不敌众,想依水列阵抵抗刘备。郭淮说:“这是向敌人示弱而不能挫败敌人,不是好计策。不如远离汉水列阵,引诱敌人渡河,等他们渡到一半时再发动攻击,刘备就可以被击败了。”曹军列好阵势后,刘备产生疑虑,没有渡河。郭淮于是坚守阵地,表示没有退回的打算。郭淮将情况报告给魏王曹操,曹操认为他做得很好,派使者授予张合符节(假节),并再次任命郭淮为司马。
二月,壬子晦(三十日),发生日食。
三月,魏王曹操从长安出发,经斜谷进军,军队沿途占据险要之地,直逼汉中。刘备说:“曹公虽然亲自前来,也无能为力了,我一定能占有汉川了。”于是收拢军队据守险要,始终不与曹军交锋。曹操运送粮草到北山下,黄忠率军想去夺取,过了约定时间仍未返回。翊军将军赵云率领数十名骑兵出营查看,正遇上曹操大军出动,赵云突然与曹军相遇,便冲击敌阵,边战边退。曹军散开后又重新聚合,追到赵云营前,赵云进入营中,反而大开营门,偃旗息鼓。曹军怀疑赵云设有伏兵,便向后撤退;这时赵云下令擂鼓震天,只用强弩在后面射杀曹军。曹军惊慌失措,自相践踏,落入汉水中淹死的人很多。第二天清晨,刘备亲自来到赵云的营地,察看昨天的战场,说:“