刘备从江州回到成都之后,开始谋划主动出击的军事部署。曹操则忙于整顿内部,巩固权威,加快晋爵为王的步伐,进而“设天子旌旗,出入称警跸”,在此期间一度向孙权示兵,败孙权于濡须口。因此,从建安二十一年(216)春到建安二十二年(217)冬十月,刘备同曹操在汉中以及益州北部的其他地区均没有大的军事接触。双方有近二年的时间相安无事。历史证明,是刘备主动打破了这种暂时相安的局面。
建安二十二年十月,就在天子同意曹操“冕十有二旒,乘金根车,驾六马,设五时副车”的时候,刘备乘机出兵了。他是在法正的激励下决策的。前面提到,法正曾对曹操收降张鲁、平定汉中,而不因势图巴蜀做过分析,指出,“此非其智不逮而力不足也,必将内有忧逼故耳”。法正认为时机成熟了,便劝刘备乘机出兵,对刘备说:“今策(夏侯)渊、(张)郃才略,不胜国之将帅,举众往讨,则必可克。克之之日,广农积谷,观衅伺隙,上可以倾覆寇敌,尊奖王室,中可以蚕食雍、凉,广拓境土,下可以固守要害,为持久之计。此盖天以与我,时不可失也。”他对取得战果的大小都进行了分析。
据说,刘备当时犹豫不决。儒林校尉周群和后部司马张裕等人反对出兵。周群说:“当得其地,不得其民也。若出偏军,必不利,当戒慎之!"张裕更直截了当地说:“不可争汉中,军必不利。”周群、张裕二人以善观天象、晓知“占候”著称,他们的话,没有任何事实根据。
刘备没有为周群、张裕的言语所惑,决心出兵。
建安二十三年(218)春,刘备安排诸葛亮“居守”成都,主持后勤,“足食足兵”,以保障军需。随即兵分两路,一是自己在法正的辅佐下,亲率赵云、黄忠、魏延等诸将,出东路,向汉中进兵;二是派遣张飞、马超、吴兰等,出西路,攻取曹操西北驻军重地下辩(今甘肃成县西)。
曹操接到战报,即派心腹战将、厉锋将军曹洪督军前去武都(治下辩),加强防御,迎战张飞、马超、吴兰等。并以骑都尉曹休和议郎辛毗参曹洪军事。建安二十三年三月,曹休建议曹洪乘张飞等未集之机,“闪击”吴兰。史称,“备遣张飞屯固山(今甘肃成县北),欲断(曹)军后”,曹军众议狐疑,曹休对曹洪说:“贼实断道者,当伏兵潜行。今乃先张声势,此其不能也。宜及其未集,促击兰,兰破则飞自走矣。”曹洪同意了曹休的意见,进兵突袭吴兰,大破之,斩吴兰将任夔等,吴兰逃亡中被氐人杀死,张飞、马超败走汉中方向,试图与刘备主力会合。西路进军的计划破产了。
刘备率军,屯驻阳平关(今陕西勉县西),曹操诸将夏侯渊、张郃、徐晃等率军。当时,根据曹操的部署,夏侯渊、徐晃屯阳平,张郃屯广石,为掎角之势。刘备对曹军力量进行了错误的估计,过于轻敌,试图“断绝外内,以取汉中”。因而遣陈式等十余营兵力去切断马鸣阁栈道(在今四川昭化县境)。徐晃即率别部急趋,大破陈式等部,蜀兵“自投山谷,多死者”。本来处于进攻势头的刘备军队反而为敌反包围,被动挨打,吃了败仗。曹操听到这个消息非常高兴,授徐晃符节,以示嘉奖,兴奋地说:“此阁道,汉中之险要咽喉也。刘备欲断绝内外,以取汉中。将军一举,克夺贼计,甚善。"
刘备的主力部队将张郃包围在广石,但也未能克敌制胜。据说,刘备“以精卒万余,分为十部,夜急攻邰。邰率亲兵搏战,备不能克”。
刘备出兵的结局,应验了周群、张裕的“军必不利”的预言。这时,刘备又知道了一个道理,即使操不在此,亦不可轻视,急忙向诸葛亮求援。据说诸葛亮有点迟疑,问从事杨洪,杨洪因而发表了“若无汉中则无蜀矣”的一番议论,进而督促诸葛亮说:“方今之事,男子当战,女子当运,发兵何疑?"
后来曹操在四川的部队先后撤了回去,可能是因为未能站住脚,还要担心刘备裁断后路,刘备的主力也随之部署到汉中附近了。