建安十九年(公元214年),刘备入主西川,占据
益州。第二年,
曹操率领大军进攻割据汉中的
张鲁,张鲁投降,曹操占据汉中。曹操退兵后,留下征西将军夏侯渊与
左将军张郃镇守汉中。建安二十二年(公元217年)十月,谋士
法正劝谏刘备率领大军进攻汉中。刘备以
军师诸葛亮留守
成都市,自己亲率部将
张飞、
马超、
黄忠、
赵云、
魏延等进军汉中。魏将夏侯渊驻守
阳平关(今陕西汉中
勉县老城西),又派魏将
徐晃驻守马鸣阁道(今四川广元西北),
张郃驻守广石(今陕西汉中勉县西),防备蜀军进攻。蜀将张飞、马超、
吴兰等率军驻扎在下辨(今
甘肃省成县),
曹魏都护将军
曹洪率军迎战,斩杀吴兰,张飞、马超退走。同年四月,刘备率军驻扎在阳平关,夏侯渊、
张郃、徐晃等率军迎战。刘备派遣将军
陈式断绝马鸣阁道,被徐晃击败。刘备亲率大军进攻魏将张驻守的广石,久攻不下。同年九月,
曹操担心
汉中市局势,亲率大军抵达
长安。此后刘备与夏侯渊两军相持不下,对峙超过一年时间。
建安二十四年(公元219年)正月,刘备南渡
汉水,于
定军山前扎营。夏侯渊率军前来争夺定军山,自己驻守南面大营,派张郃驻守东面大营。刘备半夜突袭
曹军东面大营,张郃不能抵挡,夏侯渊于是分兵救援。刘备采用
法正的计策,命令
黄忠数次鼓噪呐喊却不发起进攻,使夏侯渊放松对黄忠军队的戒备。而后,黄忠突然对曹军南面大营发起进攻,夏侯渊仓促迎敌,被黄忠斩杀。
夏侯渊战死后,张郃被推举为统帅,他与司马郭淮集合军队,固守待援。同年三月,曹操率领大军抵达汉中。但
刘备下令收拢军队,凭借险要地势据守,始终不与曹军交战。两军相持两个多月,曹军运粮困难,士气低落。同年五月
曹操退军,刘备占据汉中。定军山之战后,刘备占据
益州、
汉中市,至此奠定
蜀汉政权的基础。同年七月,刘备晋位汉中王,魏、蜀、吴三分天下的格局正式形成。蜀汉疆域得以扩大,国力增强,曹魏从此不敢贸然攻蜀。
建安十九年(公元214年),刘备入主西川,成功占领益州,势力逐渐发展壮大。
孙权因刘备拒绝归还荆州,派遣大将
吕蒙率军夺取
长沙市、
零陵区、
董爽秋三郡。刘备亲率大军五万人抵达公安,打算夺回失地。建安二十年(公元215年)三月,在刘备与孙权因荆州相争之时,
曹操亲率大军进攻割据
汉中市的
张鲁。刘备得知消息,担心曹操南下夺取益州,于遣使与孙权重修盟好,然后率军返回
江州(今
渝中区)。
同年七月,曹操大军抵达阳平,张鲁无法抵挡,逃往
巴中市地区。
刘备得知张鲁逃往巴中,派遣部将
黄权率军迎接张鲁,遭到张鲁的拒绝。同年十一月,张鲁投降曹操,曹操占据汉中地区。不久,曹操从南郑退兵返回,留下征西将军
夏侯渊镇守汉中地区,
左将军张郃辅佐夏侯渊,设险固守。夏侯渊遣部将
夏侯尚、夏侯德与阳长
韩浩率部驻守
天荡山和
阳平关,他自己则率大军驻扎在
定军山,将中军帐设在仰天洼,以防备
蜀汉刘备军队的进攻。
建安二十二年(公元217年)十月,谋士
法正劝谏
刘备,表示曹操一举而让张鲁投降,平定汉中,没有乘势以南下进攻巴蜀地区,而留下夏侯渊、张郃吞并助手,自己则率军返回北方,并非智谋的因素,而是有心无力,
曹操一定是遇到了其他内忧外患的事情,被迫退兵。如今以
夏侯渊、
张郃的才能将略,不足以守护
汉中市,如果率领大军前往征讨,必然能够攻克。如果能够占领汉中,并以此为基地广积粮草,再趁机蚕食
武威郡、凉州等地,扩大疆土,作为长久之计,则足可以争夺天下。
刘备采纳法正的建议,以军师诸葛亮留守
益州负责后方兵粮补给,以
征虏将军张飞、
平西将军马超,以及将军
吴兰、
雷铜等率军先攻占下辨(今甘肃成县)。
刘备与法正则率领
翊军将军赵云、
讨虏将军黄忠、牙门将军
魏延等,向
汉中市进军。当时
曹操已晋爵为魏王,以征西将军
夏侯渊驻守
阳平关(今陕西汉中
勉县老城西),
平寇将军徐晃驻守马鸣阁道(今四川广元西北),荡寇将军
张郃驻守广石(今陕西
汉中市勉县西)。张飞、马超、吴兰等率军驻扎在下辨(今
甘肃省成县),
曹操则派遣都护将军
曹洪前往迎战张飞、马超等人。
建安二十三年(公元218年)年三月,曹洪率军进攻吴兰,张飞驻扎在固山(今甘肃成县南山),扬言要截断曹洪军队的后路。曹洪毫不畏惧,坚持进军击败吴兰的军队,并将其斩杀,张飞、马超随之退兵。
同年四月,刘备率军驻扎在
阳平关,
曹军将领
夏侯渊、张郃、徐晃等领军前往迎战。刘备派遣将军
陈式断绝马鸣阁道,曹军将领徐晃率军截击,击败了陈式的军队。
张郃屯兵广石(今陕西汉中勉县西),刘备亲率大军进攻,久攻不下,于是致书诸葛亮,从益州派遣援兵。诸葛亮征询
丞相府从事
杨洪的意见,杨洪认为汉中市
益州的咽喉之地,关系到蜀地存亡,如果不能占据汉中,蜀地也不能长久,建议迅速发兵。诸葛亮于是调集兵力,派往汉中增援刘备。同年七月,魏王曹操担心汉中局势,亲自率领大军前来攻打刘备。同年九月,
曹操的大军抵达
长安。刘备的军队与
夏侯渊的军队相持不下,对峙超过一年时间。
建安二十四年(公元219年)正月,刘备久攻阳平关不下,于是引军南渡
汉水,于
定军山前扎营。夏侯渊率军前来争夺定军山,修筑大营与刘备的军队相持,夏侯渊自己率领轻兵驻守南面大营,派
张郃驻守东面大营。
刘备半夜发兵突袭
曹军东面大营,
纵火焚烧曹营外围的防御屏障,张郃的军队首战不利,不能抵挡,夏侯渊于是分出一半兵力,前往救援张郃。刘备采用
法正的计策,命令
黄忠数次鼓噪呐喊,却不发起进攻,使得夏侯渊放松了对黄忠军队的戒备。而后,黄忠的军队突然对曹军南面大营发起进攻,蜀军势不可挡,夏侯渊仓促之下迎敌,被黄忠斩杀;
曹魏益州
刺史赵颙也被黄忠杀死。
夏侯渊战死后,曹魏军队失去了指挥陷入混乱。督军
杜袭与
司马郭淮收拢溃散的士卒,号令各军队,推举张郃为统帅。张郃临危受命,集合军队,其他将领都接受了张郃的调遣,
曹军这才安定下来。第二天,
刘备打算渡过汉水进攻曹军,众将士都认为寡不敌众,打算依托汉水列阵以迎战蜀军。郭淮力排众议,认为应当远离汉水列阵,诱使蜀军渡河前来攻击,再趁蜀军渡河到一半时发起进攻。刘备得知曹军远离汉水列阵之后,疑心有埋伏,没有发起进攻。郭淮与张郃趁机巩固营垒,率军坚守,等待
曹操援军的到来。
同年三月,曹操从
长安经过斜谷道,率领大军抵达汉中。刘备得知后,表示曹操此次前来必然无功而返,自己定能占据汉中。刘备随即下令收拢军队,凭借险要地势据守,始终不与曹军交战。曹军运粮困难,又经常遭到蜀军突袭劫粮,曹操为此烦恼不已。两军相持两个多月时间,曹军士卒伤亡很多,士气低落。同年五月,曹操率领大军退出汉中返回长安,刘备于是得以占据汉中地区。同年七月,刘备自称汉中王,提拔牙门将军
魏延为镇远将军,领汉中
太守,以镇守汉中。刘备随即率领大军返回
成都市,封赏将士,任命
许靖为太傅,
法正为
尚书令,
关羽为
前将军,
张飞为
右将军,
马超为
左将军,
黄忠为
后将军。刘备占据
益州、汉中,至此奠定
蜀汉政权的基础。
定军山之战中,
夏侯渊被斩杀,曹魏自此失去一员大将。刘备占据定军山后,凭险据守,以逸待劳,使得
曹操在接下来的
汉中之战时无所作为,被迫退军,
刘备得以占据汉中。刘备在
建安二十四年(公元219年)七月晋位汉中王,曹操已在建安二十一年(公元216年)四月晋爵为
魏王,
孙权虽然并未称王,但是魏、蜀、吴三分天下的格局正式形成,互相牵制,三国疆域此后变化不大。中国国际诸葛亮研究会副会长郭清华在《论定军山在三国历史文化中的地位与影响》一文中评价认为,定军山之战后,使蜀汉扩大了疆域,增强了国力,曹魏从此不敢贸然攻蜀。
罗贯中所著小说《
三国演义》第七十回与第七十一回描写了
定军山之战。曹操平定汉中后,留下
夏侯渊与
张郃等将领镇守,刘备与
军师诸葛亮率领
张飞、
赵云、
黄忠等将领,亲率大军前来进攻,黄忠首先用计先夺取了
曹军粮草所在的
天荡山,赶走了魏将张郃、
夏侯德等人。刘备又派遣部将
严颜前往
巴西郡阆中,替换张飞、魏延前来进攻汉中。黄忠率军抵达定军山,首先占领了定军山对面的高山,观察曹军虚实。夏侯渊得知后大怒,亲自率军进攻黄忠的军队,黄忠拒不出战,等到曹军士气衰落,防备松懈之时,黄忠突然发起进攻,纵马冲到夏侯渊麾盖之下,将夏侯渊斩杀,蜀军自此夺得定军山。