两军交战长达一年之久,始终未能分出胜负。张飞和马超率军驻守固山,并放出风声称将从曹军后方包抄,切断其退路。曹洪等人闻讯后,打算趁张飞和马超合兵之前先攻打下辨的吴兰。然而,曹休对蜀军的意图表示怀疑,他认为蜀军若真打算切断曹军退路,必会暗中行动,不会如此大张旗鼓。他建议放弃攻打下辨,直接攻击蜀军主力。但曹洪未采纳其建议,坚持进攻下辨。结果,吴兰军队几乎全军覆没,吴兰本人也在乱战中丧生。张飞和马超得知下辨失守后,迅速撤离固山,转投他处。
另一边,刘备与夏侯渊的交锋尤为激烈。初时,陈式奉命进攻马鸣阁,却不敌徐晃,损兵折将,令刘备心生慌乱。他迅速集结精锐兵力,全力攻打驻守广石的张合部队,然而尽管付出了巨大努力,却依然未能将其歼灭。眼见胜利无望,刘备心急如焚,向诸葛亮发出求援信。诸葛亮闻讯后,立即率兵前来增援,使得蜀军得以继续与曹军对峙。
然而,汉中久攻不下,曹操也感到焦虑不安,亲自前往长安督战。但战事依旧胶着,未有明朗进展。公元219年,刘备决心孤注一掷,八大部队齐驻定军山。定军山地势险要,既给蜀军带来了挑战,也让曹军难以展开攻势。刘备驻军后,夏侯渊与张合迅速领兵至走马谷,双方形成对峙之势。
黄权见机行事,向刘备献策,提议夜袭曹营。他建议先用火攻引燃曹营,趁其混乱之际发起猛攻。刘备采纳了这一计策,果然曹军大乱。夏侯渊与张合费尽九牛二虎之力才勉强稳住阵脚,分别率兵防守南北。刘备趁机从北面发起猛攻,张合难以抵挡。夏侯渊见状,急调部分兵力支援张合。经过一番激战,曹军已显疲态。刘备、法正等人远观战局,见时机成熟,法正示意发起总攻。鼓声隆隆,蜀军士气大振,呐喊着冲入曹营。曹军措手不及,伤亡惨重。夏侯渊及数名部将被斩于马下,张合则率领残兵败将逃往汉水的曹军北下营。
夏侯渊阵亡后,张合接任统领,逐渐稳定了曹军的混乱局面。尽管刘备取得了一场胜利,但他深知双方实力悬殊,不敢轻举妄动。曹军虽然占据地利之便,但在一水之隔的情况下也难以发动攻势。张合曾数次试图引诱刘备过河交战,但刘备始终不为所动。最终,曹军只得退回阳平关等待援军。不久,曹真奉曹操之命前来增援,与徐晃联手击败了前来进攻的蜀军,挽回了一部分损失。