刘备取成都
曹操吞并荆州、江南的计划受挫以后,乃改而谋取关中。建安十六年,曹操声称要讨伐张鲁,进兵汉中。明眼人都会看出这是欲盖弥彰,因为当时占据关中的是韩遂、马超。如进兵汉中,关中是必经之路。不先取韩遂、马超,是不能进兵汉中的。韩遂、马超是知道曹操的意图的,遂联合起来,反对曹操。
曹操进兵关中,用计离间马超、韩遂,大破关中诸军,韩遂、马超逃往凉州。曹操遂占有关中,留夏侯渊屯长安。之后,曹操并不急于进攻汉中,反而于建安十七年和十九年两次出兵东征孙权。只是在东征无功后,才于建安二十年进攻汉中。
建安十六年曹操声称进攻汉中,对益州豪族阴谋反对刘璋却有大用处。他们抓住这个机会,要把刘备引进益州来,达到驱逐刘璋的目的。刘璋的别驾从事张松对他说:“刘豫州(指刘备),使君之宗室而曹公之深仇也,善用兵,若使之讨鲁,鲁必破。鲁破,则益州强,曹公虽来,无能为也。”(《三国志·蜀书·先主传》)刘璋听了张松的话,派法正去荆州请刘备带兵入蜀征伐张鲁。刘备当然求之不得,遂安排诸葛亮、关羽、张飞、赵云等守荆州,自己带领庞统、黄忠等入蜀。庞统,当时被称作“凤雏”,与“卧龙”(诸葛亮)齐名。
刘备到涪(今四川绵阳境),刘璋来会。张松、法正、庞统都劝刘备在会上袭取刘璋。刘备不肯,说:“此大事,不可仓卒”。(《三国志·蜀书·先主传》)自己是被请来的,没有助人讨张鲁,先把主人杀掉,这是丧失人心的事。为收一时之利而失掉人心,刘备不干。刘璋盛情接待刘备,给兵给饷,使他北讨张鲁。
刘备北到葭萌关(今四川昭化南)。但他没有进兵去讨张鲁,而是按兵不动,“厚树恩德,以收众心”(《三国志·蜀书·先主传》)。
建安十七年,曹操征孙权,孙权向刘备求救。刘备要赶回荆州,请刘璋助兵助饷。但这次,刘璋却很冷漠,给兵给饷不及刘备希望的一半。
张松听说刘备要回荆州,忙写信给刘备:“今大事垂可立,如何释此去乎?”(《三国志·蜀书·先主传》)张松的哥哥广汉太守张肃知道了这事,报告给刘璋。刘璋杀掉张松,下令各关城防范刘备。刘备到蜀经年,已得到益州一些人的支持。现在又得到曲在刘璋的借口,便回师进攻成都。诸葛亮在荆州得到消息后,留关羽守荆州,亲率张飞、赵云入蜀,攻下白帝、江州(今重庆)、江阳(今泸州),与刘备合围成都。建安十九年,刘璋降。
汉中是益州北方门户,对取得益州的刘备来说,汉中是必争之地。汉中也是关中长安的屏障,曹操也要争汉中。建安二十年,曹操征张鲁。