建安三年公元一九八年,春季三月,曹操在许都打算再次攻打张绣,荀攸说:“张绣与刘表彼此依赖,力量强大,但张绣是外来的军队,完全仰赖刘表供给粮草,刘表无力长期供给,势必会各奔前程,不如暂缓出军,静观其变,诱导张绣前来归服,如果进军急迫,他们必然会互相救援。”曹操没有听从,亲自率领军队出征,谋士荀彧随征。曹操直接进围张绣驻军的穰城。
刘表再次派遣黄忠率部救援张绣,黄忠按时奔赴安众,截断曹军的后路,配合张绣,夹击曹操。
安众原来是宛城的西乡,汉武帝元朔四年置县,属南阳郡,汉朝长沙定王之子刘丹的封邑。涅水经过安众境内,湍水经过安众县城,在南边汇合涅水,形势一条主要河流。新莽居摄二年,安众侯讨伐王莽,兵败而死,安众城随之而废。光武中兴以后,复设安众。
夏季四月,曹操闻后路被刘军截断,只得解散了穰城的包围,向许都撤退,张绣率军在后追击。谋士贾诩劝阻张绣说:“不能追击,追则必败。”张绣不听,继续进兵,同时知会黄忠在安众配合阻击曹操。
五月,黄忠驻扎在安众,分兵拒守险要,截断曹军的后路。张绣按照约定带领追兵赶到安众境内。
曹操接到张绣和刘表联兵合击的探报,决定抢先打败张绣,再乘胜击溃刘表的援军,闯出隘口。他给荀彧写信说:我到了安众一定可以打败张绣,因为敌人阻挡我们回师,把我军置于死地,所以我能料到可以获胜。
曹操到达安众以后,全军前后受敌,于是他下令连夜开凿险道,伪装要向一边逃跑,诱使张绣率领全部军队前来追击,进入险要地带。曹操命步兵和骑兵前后夹击,奋勇冲杀,把张绣部队围困起来。
黄忠闻报张绣陷进重围,形势异常危急,立即率领主力救援张绣,杀开一条血路,使张绣所部脱离险境。曹军乘机撤出了安众界口,在隘外下寨。张绣黄忠两军会集安众,准备整军再战。贾诩登上城墙,向远方的曹营瞭望一阵,对张绣说:“赶紧再去追击,再战必胜。”张绣向他道歉说:“没有听从您的建议,因此落到这个地步,如今已经大败,怎么还要再去追击?”黄忠一听,立刻预料到出其不意攻其不备的用兵原则,他说:“兵势变幻无常,现在曹军情况已有转变,请将军立刻追击,不要延误战机。”张绣茫然不解地问贾诩:“我用精兵去追击退军,而您说必败,再用败兵去追击胜兵,而您说必胜,这是什么原因呢?”贾诩说:“这很容易明白,将军虽然善于用兵,却不是曹操的对手,曹操军队刚刚开始撤退,一定亲自率军断后,所以料定将军必败。曹操攻打将军,既没有失策的地方,又不是力量用尽,却一下率军撤退,那么他的后方一定发生了变故。现在他已经击败了将军的追兵,必然轻装速进,而留下其他将领断后,其他将领虽然勇猛却不是将军的对手,因此将军虽然率领败兵去追击,也一定能够获胜。”张绣素来相信贾诩的话,于是收拾残兵败将,联合黄忠,并力追击曹军。双方一场激战,将敌军打得七零八落,狼狈逃窜,大获全胜。黄忠返回宛城,张绣留守穰城。