建安二十二年(217年)十月,法正向刘备献策说:“曹操一举而降张鲁,定汉中(时在建安二十年)。不因此势,以攻巴、蜀,而留夏侯渊、张郃屯守,身遽北还,此非其智不逮,而力不足也,必将内有忧逼故耳。今策渊、郃才略,不胜国之将帅,举众往讨,必可克之,克之之日,广农积谷,观衅伺隙,上可以倾覆寇敌,尊奖王室;中可以蚕食雍、凉;下可以固守要害,为持久之计。此盖天以与我,时不可失也。”备善之,乃率诸将进兵汉中,法正亦从行。
建安二十三年(218年)四月,刘备进屯阳平关(今陕西勉县西北),与夏侯渊、张郃相拒。直至次年正月,备自阳平南渡沔水,缘山稍前,于定军山(勉县东南)作营。夏侯渊引军来争,法正建言可击,备使黄忠乘高鼓噪攻之,大破渊军,斩渊。三月,曹操自长安由斜谷道来至汉中,备敛众拒险,终不交锋。操军逃亡者多,操以汉中险远,粮运艰难,终于五月引诸军退还长安。刘备遂有汉中。
刘备先已遣宜都太守孟达从秭归往北攻占房陵(郡城在今湖北房县),得汉中后,又遣养子刘封自汉中乘汉水下统达军,与达会攻上庸(郡城在今湖北竹山县西南)。上庸太守申耽举郡降。备以耽领上庸太守,以耽弟仪为西城太守。
七月,刘备自称汉中王,立子禅为王太子。备留汉中太守魏延镇汉川。自己率军还成都。