在三国鼎立的局势中,汉中是蜀、魏接壤的战略要地,但在地理位置和风俗民情上近蜀而远魏,因而归蜀易而归魏难。那时,曹操虽迅速平定汉中,抢在刘备之前,却进退两难了。刘备当时在成都立足未稳,无力来争,但是一旦安定,从曹操手中夺取汉中则势在必行。
这一点,刘备的谋主之一、关中郡县人、蜀郡太守法正看得一清二楚。建安二十二年(217年),法正见时机成熟,便为刘备分析形势,指出曹操轻取汉中却不乘胜进攻巴蜀,反而留夏侯渊、张合屯守,主力北还,这不是曹操愚蠢,而是实力不足,离邺城太远,有内顾之忧所致。现观渊、合才略,不胜蜀中将帅,如果举兵征讨,必可攻克。占据汉中后,可充分利用当地的富庶,广积粮谷,伺机而动。这样上可以扫平天下,收复汉室,中可以蚕食雍、凉2州,广拓疆土,下可以凭险固守,作持久之计。他力劝刘备不要失掉天赐良机。
这一番透彻的议论,正合刘备之意。于是刘备调兵遣将,亲征汉中,法正随行,运筹帷幄。
刘备先令张飞、马超、吴兰诸将屯兵下辩(甘肃成县西)。曹操派遣曹洪抵御。次年,曹洪击败吴兰,张飞、马超撤退。吴兰被阴平(甘肃文县西)氐人首领强端斩杀,献首曹军。刘备大怒,与张飞、马超会合,亲率主力进逼阳平关。
汉中曹军将帅夏侯渊、徐晃、张合分头据关固守。刘备先派陈式断绝马鸣阁道,遭徐晃反击;又自攻广石的张合,久不能克。双方长期对峙,刘备紧急向成都要援兵。诸葛亮询问杨洪,杨洪说:“汉中是益州的咽喉,存亡相依,如无汉中,就等于无蜀,这是家门口的祸福。方今之事,男子当战,女子当运,发兵何疑?”七月,曹操亲领大军再次西征,增援汉中。九月,曹操坐镇长安。
建安二十四年(219年)春,刘备得到诸葛亮派来的援兵,便按法正的精心谋划,自南平渡沔水,抢占战略要地定军山。定军山位于汉中勉县东南5公里处,沿汉江东西绵亘耸立着12座山峰,山峦叠嶂,气势雄浑。它隔江与天荡山对峙,形成天险。
刘备预先让勇毅冠三军的老将黄忠,在天荡山下和定军山西峰仰天窝依山势扎营,作为伏兵。他亲率精卒万人,星夜急攻驻屯在广石的张合。张合率亲兵搏战,刘备转而在走马谷火烧都围,诱迫曹军统帅夏侯渊来救。
只知恃勇的夏侯渊果然中计,急切来争。他率轻骑驰援,途经定军山,遭到刘备拦击。正当两军酣战之际,法正说:“可以出击了。”黄忠便率伏兵突然从西峰居高临下冲出来,将夏侯渊团团围在山下干坦处(今称武侯坪)。夏侯渊虽然兵马精锐,顽强抵抗,但黄忠更勇,率众短兵接刃。蜀军士气高昂,金鼓振天,欢声动谷。