建安二十四年(219年),刘备从阳平关,南渡沔水,进取汉中,于定军山扎营。
当时镇守汉中的魏将是夏侯渊。夏侯渊早年就跟随曹操起兵,官渡之战、平定黄巾、东征孙权,一次都没落下。他最大的功绩是平定河西,用了一个多月的时间,就把为乱了三十多年的羌族首领宋建给灭了。曹操每次接见羌胡等族的首领,都要带着他。张鲁归降后,夏侯渊移军到汉中。他手下的副将,是后来名列魏国五子良将的张郃和徐晃。
曹操攻克汉中张鲁后,刘备出于战略考量,放手开展对汉中的争夺。建安二十三年(218年),刘备派遣将军吴兰和雷铜作为先锋,可惜被魏军消灭。但刘备没有因此退却,他亲自率军进驻阳平关,与驻扎在汉中的魏军遥遥相望。
几个月后,刘备占据位于汉中城西的定军山。定军山山势耸立,凭高俯视,汉中的动向尽被收入眼底。夏侯渊不愿失去战略要地,立刻带兵来夺,蜀汉老将黄忠占据地势高的优势,趁夏侯渊不备俯冲而下,将其斩杀。这场仗打完,定军山被刘备牢牢掌握,夺取汉中的形势已成。
三月,曹操率领大军抵达汉中地界,进驻阳平关。刘备踌躇满志,说即使曹操亲自前来,也不能改变什么,自己一定会拥有汉中。刘备在山上扎营,占据险要,固守不战,与曹操对持。
曹操来争汉中,将数千万囊粮草搬运到北山囤积。时任征西将军的黄忠在赵云营内。黄忠见曹操运送了这么多的粮草,于是建议赵云可以去劫取。但曹操的囤粮重地,应该是有重兵把守,为谨慎起见,赵云与黄忠约定期限,然后再让黄忠领兵去劫粮。黄忠逾期未归,赵云率领轻骑前往接应,正与曹军相遇,曹军紧追不舍,直到赵云营前,赵云大开营门,偃旗息鼓,曹军怀疑赵云设有伏兵,引军退走,赵云趁机反击,曹军惊骇,自相践踏,死伤极多。
曹操派人召北中郎将曹彰来援汉中。五月,曹彰日夜兼程,赶至长安。但曹操已经开始撤离,从汉中回师长安。
汉中之战以刘备的胜利而结束。
