在三国鼎立的局势中,汉中是蜀、魏接壤的战略要地,但在地理位置和风俗民情上近蜀而远魏,因而归蜀易而归魏难。那时,曹操虽迅速平定汉中,抢在刘备之前,却进退两难了。刘备当时在成都立足未稳,无力来争,但是一旦安定,从曹操手中夺取汉中则势在必行。
这一点,刘备的谋主之一、关中郡县人、蜀郡太守法正看得一清二楚。建安二十二年(217年),法正见时机成熟,便为刘备分析形势,指出曹操轻取汉中却不乘胜进攻巴蜀,反而留夏侯渊、张合屯守,主力北还,这不是曹操愚蠢,而是实力不足,离邺城太远,有内顾之忧所致。现观渊、合才略,不胜蜀中将帅,如果举兵征讨,必可攻克。占据汉中后,可充分利用当地的富庶,广积粮谷,伺机而动。这样上可以扫平天下,收复汉室,中可以蚕食雍、凉2州,广拓疆土,下可以凭险固守,作持久之计。他力劝刘备不要失掉天赐良机。

一次,赵云率数十骑出营侦察,与曹军大队遭遇。赵云且战且退,回到营中,敞开大门,偃旗息鼓。魏军疑有埋伏,自动回兵。赵云命士兵击鼓,仅用劲弩射击。魏军大惊,自相践踏,不少坠入汉水淹死。刘备前来视营,称赞赵云:“子龙一身都是胆。”
曹操此来,确实不是要争汉中,而是要接应张合诸军及汉中民撤离汉中,以充实关中。在长安时,他审时度势,就已决定忍痛放弃汉中,但又担心刘备乘胜北攻武都氐人,威胁关中,便向雍州刺史张既问计。张既建议用厚赏劝说武都氐人迁居关中西部。曹操来汉中的同时,便派曹真与张既到武都接应曹洪并迁徙当地氐人5万户到扶风、天水一带。
曹操理智上虽要放弃汉中,感情上却实在不愿认输,内心矛盾,所以在汉中下达的营中口令为“鸡肋”,随行众官都猜不透是什么意思,只有主簿杨修一听就明白了,开始收拾行装。别人吃惊地问他为什么,他回答:“鸡肋,弃之可惜,食之无所得,正好比是汉中?由此猜知魏王要撤军了。”
五月,曹操果然撤兵回到长安,并迁徙汉中民众数万户落籍三辅。他令曹洪、张合诸将把守关中西大门陈仓,严防刘备。十月,自率主力还师洛阳,两个月后就病死了。
刘备唾手而得汉中。接着他又派宜都(湖北宜都)太守孟达北攻房陵(湖北房县),并遣养子刘封自汉中乘沔水而下与孟达合攻上庸。到了秋天,刘备志满意得,步曹操称魏王的后尘,自称汉中王,凯旋回师成都,委任魏延为都督,镇守汉中。至此,刘备拥有荆、益二州及汉中,势力达到顶峰。