袁绍在战争初期受到了严重挫折,但是他并没有从失败中吸取教训,还是仗着在军队数量、装备和物资储备上的优势,坚持要同曹操决战。经过一段休整以后,到了这一年的七月,袁绍又把大军集结到官渡北面的阳武,准备继续发动进攻。这时候,沮授再一次向他分析战争的形势说:“我方军队虽然人数多,却比不上曹军勇敢善战;曹军的弱点是军粮少,物资储备没有我方充足。曹军利于急战,我军利于慢打。因此,我军应当用持久战来消耗曹军的力量,以便最后战胜曹军。”袁绍不听这些劝告,仍然一意孤行。他命令主力部队开到官渡前线,依托沙堆建立营寨,从东到西有几十里长。曹军也分别扎下营盘,和袁军相对抗。
九月,曹操向袁军发动了一次进攻,没有能够取胜。他便改变方针,深沟高垒,固守阵地,等待有利时机,再向袁军进攻。袁绍求战心切,他看到曹军缩回营中不再出来,就命令士兵在曹营外面堆起很多土山,在土山上砌起高高的壁楼,让士兵们在壁楼上向曹军营垒放箭。号令一下,袁军壁楼上万箭齐发,箭像雨点般向曹军射来;曹营士兵只得用盾牌遮住身体,人心慌恐。针对袁军这种做法,曹操叫工匠连夜赶造一批发石车,分布在营墙内,正对着袁军的土山。等袁军弓箭手一射箭,曹营内一齐拽动发石车,连珠般发射石块,往上乱打。袁军的壁楼被击破,弓箭手也死伤了不少。发石车发射石块的时候声响如雷,人们管这种车叫“霹雳车”。袁绍见用壁楼进攻没有成功,便命人暗凿地道,直通曹营。曹操就叫士兵们在营墙内挖掘长沟,进行防御。袁军把地道挖到沟边,果然无法进入,反而白费了许多力气。这样,双方在官渡相持了约三个月。
经过白马、延津之战,袁、曹双方进入了暂时相持的阶段。袁绍虽然在这两次战斗中连遭不利,但是仍然保持着优势。从人力上说,袁绍军队将近10万,曹操最多不过三四万。从后方的经济力量上说,曹操占领的兖〔yan演〕、豫二州,是汉末以来破坏得最严重的一个地区,远不如袁绍占领的河北地区那样富庶。曹操虽然在进入许都的同一年,就开始屯田积谷,毕竟还只有四五年光景,军用粮饷,远远不如袁绍充足。然而,曹操是历史上一个眼光远大和才能出众的政治家,为了收揽人心,他采取了一些比较开明的政治措施。例如:他曾把阳安郡(故城在今河南省确山县东北)内所征收的绵绢,完全发还给百姓。又如:他下令部队行军,不许马踏青苗,违者处死。有一次他自己的马踏坏了麦田,还命令部属按照规定议罪,结果自己拔出佩剑,把头发割下一绺,掷在地上,来表示对自己过失的惩罚。曹操的这类作法客观上有利于人民,所以在一定程度上,他能够得到人民的支持,为在军事上战胜敌人创造了有利条件。
曹操方面军队人数少,军粮又很困难,战争如果旷日持久地僵持下去,对曹军不利。面对这种情况,曹操本人曾一度动摇,打算退守许都。曹操的谋士荀彧为他分析战争的前途,认为这次战争是打败袁绍的好机会。他劝曹操要尽最大努力,争取最后胜利。曹操接受了荀彧的意见,坚定了和袁绍周旋到底的决心。他一面命令部队继续固守官渡,一面密切注视敌人的动态,寻找有利时机,进行最后决战。