曹操失掉了北山军粮,顿时感到危机四伏,崩溃在即,脸上愁云密布,心中沉痛凄凉。他知道目前全军各菅只剩先期领发的少量军粮,难以持久,而汉中官仓余粮早已调拔一空,而且汉中道路崎岖艰险,运粮极其困难,等不到粮草运到,全军就会断粮分崩。因此曹操不能坐以待毙,准备速战速决,改观战局扭转困境。于是他整兵再战,命令徐晃为先锋,牙门将军王平为副将,向刘备发动进攻,主要任务就是抢夺军粮,维持局面。徐晃、王平率军来到汉水。
徐晃,字公明,河东杨县人。曾在郡中担任官吏,因为跟随车骑将军杨奉讨伐贼兵,立了功劳,升为骑督尉。当李傕、郭氾在长安作乱,徐晃向杨奉请命护送天子回洛阳,天子因此顺利渡河,到了安邑,封徐晃为都亭侯。到达洛阳以后,徐晃看见韩暹每天都在争权夺利,于是又劝杨奉归降曹操,杨奉起初听从,后又反悔,在梁国遭到曹操的讨伐,徐晃乘机归降曹操。曹操让徐晃带兵,派他去攻打卷县,以及原武的贼兵,获得大胜,被封为裨将军。徐晃曾跟着曹操讨伐吕布,降服吕布的大将赵庶、李邹等,并和史涣在河内击杀眭固。建安五年春,徐晃跟随曹操攻打刘备,官渡大战时,攻克白马,进兵延津,因此升为偏将军。他还曾和曹洪一同击败隐彊的贼兵祝臂,又和史涣在故市袭击表绍运补的粮草,功劳最多,于是封为都亭侯。曹操围攻邺城之后,又攻陷邯郸。易阳县令韩范先是假装投降,然后又坚拒防守,徐晃奉命前去攻伐,一到城下,用箭射信城上,向他分析利害得失,韩范诚心归降。徐晃又率兵征讨毛城,事先设计埋伏军队暗中偷袭,夺取三个屯驻区。又跟着曹操到南皮,击败袁谭的军队,讨伐平原郡的叛贼,也获得平定。跟随曹操征伐匈奴之后,官拜横野将军。建安十三年又跟从曹操进攻荆州,另外带兵屯驻樊城,进击中卢、临沮、宜城等地的贼兵。又和满宠在汉津抗击关羽,和曹仁在江陵对周瑜作战。建安十五年,讨伐太原的叛贼,围攻大陵,城破,斩贼兵主帅商曜。韩遂、马超在关右反曹操,徐晃奉令驻军汾阴,安抚河东的百姓。当曹操到达潼关,恐怕附近有伏兵,不能安全过渡,于是召来徐晃,徐晃请令带领精锐部队渡过蒲阪津,先为大军布署阵地,击退乘夜攻打的敌军梁兴,曹操大军顺利过河,击败马超韩遂。又奉命和夏侯渊平定隃麋、汧县一带的氐族胡人,然后和曹操在安定会师。当曹操回到邺城,又派徐晃和夏侯渊平定鄜县和夏阳一带的残敌,杀死梁兴。跟随曹操征讨张鲁以后,又奉令攻打椟县、仇夷等地的氐族,因功迁升为平寇将军。此外,他又解除张顺将军的围困,击败了贼兵陈福等三十多个屯区。曹操回到邺县,留下徐晃和夏侯渊在阳平抵抗刘备。刘备派陈式断绝马鸣阁的通道,马鸣阁是通往汉中的咽喉要道,刘备想要断绝内外的通路,以便取得汉中地方。徐晃分别击败对方,受到曹操的嘉奖。现在曹操在汉中战场全面失利的关口,就调派徐晃来挽回败局。
徐晃计划前军渡水列阵,以求取得背水作战的效果,王平说:“如果命令前军渡水,一旦发生危急,怎么撤退呢?”徐晃说:“昔日韩信背水为阵,所谓致之死地而后生,现在我使用这个战术,发挥将士们作战的积极性,力争一战成功。”王平说:“不然,昔日韩信料到敌人无谋而用此计,如今将军能料黄忠、赵云用兵之意吗?”徐晃说:“你可带领步兵在后,看我带领马军破敌。”他即令军土搭设浮桥,随即渡过汉水,扎下营寨,准备攻打黄忠。
黄忠当即向刘备报告情况,请命带领本部兵马去战曹军。得到刘备同意后,他对赵云说:“现在徐晃恃勇而来,暂时不要迎战,等到日暮兵疲,你我分兵两路,一战可以击破敌军。”赵云听从,自带夲部据守营寨。黄忠守在营门,随时观察曹军的动态。徐晃领兵从辰时挑战,直到申时,不见汉军出动。他令弓弩手走在前面,向汉营射击。黄忠派人将观察情报转告赵云,他说:现在徐晃命令弓弩手临门射箭,我认为他的军队必定即将撤退,我们可以趁势出击。
赵云接到黄忠的分析情报后,即作出战准备,这时夲营探报送到:曹军后队开始退动。赵云立刻从右翼出击。
左边黄忠营寨,鼓声大震,号角齐呜。黄忠挥师出战,从左边进击,和赵云两下夹攻。徐晃支持不住,军土连连后退,被逼进汉水,大半淹没在波滔之中。
徐晃力战逃脱,败回营中,身后人马清晰可数,他又气又急又后悔,竟然指责王平:“我在前线指挥作战,军情万分危急,你怎么坐视不救?”王平说:“我如果带兵去救,营寨必然不保,你夺不来粮食,我再把营中余食丢失,军队就会自动解散,我曾劝公不要轻易出动,公不肯听,以致遭到失败,怎么怪起我来?”徐晃勃然大怒:“你不顾大局,坐观成败,反而对抗主将,眼里还有军法吗?”属下纷纷劝解,徐晃才转身走去。
当夜,王平得到属下密报:“徐晃企图捕斩将军,以推卸兵败责任,赶快想法开脱。”王平说:“曹营不可再留,我们要另谋出路。”他连夜带领本部军马,在营中放火,造成一片大乱的场面,乘势冲进徐晃的营区。徐晃急忙弃营逃走。王平收整军马,渡过汉水来投黄忠。