由于阳平关地理位置的特殊性,曹军占领阳平关就相当于打开了汉中的西大门,于是汉中岌岌可危,张鲁见状打算就此投降曹操,但是他的部下劝他说:“今日您的处境是被迫投降的,曹军接受了您的投降也会轻视您的,不如先派人抵抗,您先撤退,或许会有转机。”于是张鲁逃往巴蜀,临走时命令部下不要烧毁汉中等地的仓库,他说:“我本来是想要为国家效命的,但是一直没有得偿所愿,我今天离开也是迫不得已,钱财与粮食本来就是国家的,我把它们还给国家。”于是将各种账本加以封存,留给了曹军。
曹军顺利进驻汉中,张鲁在逃亡不久也归降了曹操,官拜镇南将军,封阆中侯,食邑万户。
曹操得汉中后,司马懿建议曹操:“刘备刚得益州,人心未稳,现在他又在江陵与孙权争夺土地,这是我军袭击他的最佳时机,我们占据着汉中,到时大军压境,益州必然土崩瓦解,您一定要早下决断,否则会错失良机。”
谋士刘晔对此也认为,如果不及时乘胜进击,占领蜀地,等到刘备班师回朝安抚民心,就不好攻取了。曹操听后思考良久,说道:“如今我们离开朝廷已经很久了,解决后方的叛乱才是当前任务,既然得到了陇地,就先不要再盼望得到蜀地了,我们先回去吧。”于是留夏侯渊、郭淮、徐晃、张郃等镇守汉中。
正是这个决定给了刘备一个喘息的机会。
建安二十二年(公元218年),在解决了与孙权的问题后,刘备派遣张飞、马超、雷铜、吴兰等人攻打下辩,曹操派遣曹休、曹真、曹洪等人抵抗。第二年,张飞屯兵固山,佯装要截断曹洪后方,但被曹休识破,曹洪突袭吴兰,吴兰、雷铜等战死,马超、张飞于是撤退。七月,刘备占据阳平关,曹操赶忙部署救援,九月抵达长安。
建安二十四年(公元220年),刘备放弃阳平关,南渡沔水,扎营定军山,夏侯渊闻讯赶忙来抢定军山,刘备夜袭夏侯渊,猛攻张郃,夏侯渊亲自率兵解救,与黄忠短兵相接,不敌,被黄忠斩杀,曹军士气大减,人心惶惶,为了稳定局面,张郃暂时统领汉中诸军,三月,曹操率领大军抵达汉中地界,进驻阳平关,刘备占据险要地形,在山上安营扎寨,固守不战,与曹军对峙。
这时的曹操虽然大军在手,但是消耗庞大,不得不将数千囊粮草搬运到北山囤积,并派重兵把守,黄忠与赵云商议决定互相接应前去劫粮,黄忠不慎中了曹军埋伏,赵云将其及部下解救,曹军紧追不舍,追至赵云营前,赵云大开营门,偃旗息鼓,曹军怀疑有埋伏,打算撤退,赵云竟趁机反击,曹军大惊,自相践踏,伤亡惨重。而后刘备开始主动进攻,早已过花甲之年的曹操变得极为被动,节节败退,五月,强迁汉中百姓退出汉中,撤回长安,刘备占领汉中,不久便自称汉中王。汉中之战以刘备胜利而告终。
此时年迈的曹操本来就因为之前损失爱将夏侯渊等人而痛心,接着不久便失了汉中,又一次次损兵折将,爱子又陷于危险境地,考虑再三,打算放弃许都,后来由于谋士司马懿献上妙计,利用孙权刘备之间的矛盾,使孙权击败并斩杀了关羽,这才解了许都之危。
客观的说,之前曹操集团的实力是明显高于刘备集团的,自汉中之战以来,曹操逐渐表现出了大不如前的状态,也许是上了年纪,身体不支,也许是轻敌大意,也许是敌方将领能人太多,总之,汉中之战曹操败了。