建安元年(196)十月,汉献帝移驾许县。建安二年(197)正月,曹操就率军开到了南阳郡的郡治宛城。此时的宛城并不在刘表手里,它的主人叫张绣,宛城是他刚刚从刘表那儿夺过来的。当曹操大军南下时,张绣才发现原来自己是那么无助,他才夺了刘表的地,得罪了刘表,曹操又来了。张绣被一南一北两大军阀夹在了中间,左思右想,走投无路的张绣只好投降了北边的曹操,交出宛城。不久,张绣又反悔了,对驻扎在宛城的曹军发起突然攻击,打了曹操一个措手不及。
曹军遭遇突如的打击,损失惨重,宛城之战是曹操一生中为数不多的惨败。但曹军很快便稳住了阵脚,打退张绣。张绣在宛城无法立足,被迫退到宛城西南的穰县。
建安二年(197),刘表、张绣联军与曹军在南阳一带对峙,反复拉锯,不分胜负。
曹操派亲信曹洪守南阳,但曹洪显然不是刘表、张绣的对手,被打得节节后退。刘表、张绣联军一度打到南阳郡最北面的叶县,这里距许县已经很近了。曹操只好亲自出马带兵反攻,连续攻占南阳郡的湖阳、舞阴,才稳住南阳的局势。