(江苏睢宁),屯居于沛(江苏沛县),并与袁绍联系,打算合力攻曹。
曹操为避免两面作战,于建安五年二月亲率精兵东击刘备,占领沛县,进攻下邳,迫降关羽。
刘备全军溃败,只身逃往河北,投奔袁绍。
当曹、刘酣战之时,谋士田丰建议袁绍“举军而袭其后”。袁绍以儿子有病为由,拒绝采纳。
曹操从容击败刘备,回军官渡。
为解“白马之围”,曹操“使张辽、关羽前登,击破,斩(颜)良”;袁绍“骑将文丑与刘备将五六千骑前后至”,曹操“时骑不满六百,遂纵兵击,大破之,斩(文)丑”——“良、丑皆绍名将也;再战,悉擒,绍军大震。公还军官渡。绍进保阳武(今原阳)。关羽亡归刘备”。
官渡之战全面开打。曹操首胜。
袁军初战不利,兵力依然居优。
同年七月,袁绍进军阳武,准备南下攻许。八月,主力逼近官渡,依沙堆立营,东西宽约数十里。曹操立营与袁军对峙。
袁绍构筑楼橹,堆土如山,以箭俯射曹营。曹军采取刘晔之计,制作霹雳车,发石击毁袁军楼橹。袁军掘地道进攻,曹军于营内挖横沟以破敌。
双方相持3个月,曹操兵少粮缺,士卒疲乏,“汝南降贼刘辟等叛应绍,略许下”,曹操几近崩溃。
荀彧“公以至弱当至强,若不能制,必为所乘”,让曹操得以坚持危局。
曹操积极捕捉战机,击败袁军;再派曹仁、史涣截击、烧毁袁军数千粮车,袁军补给难继。
同年10月,袁绍再派车运粮,并令淳于琼率兵万人护送,囤积乌巢(今延津东南)。恰在这时,袁绍谋士许攸投奔曹操,建议曹操轻兵奇袭乌巢,烧其辎重。
曹操不疑,亲率步骑五千,冒用袁军旗号,夜袭乌巢。袁绍获知火烧乌巢,只是派轻骑救援,主力猛攻曹军大营。曹营坚固,一时难以攻下。
袁军前线闻得火烧乌巢,军心动摇,大军遂溃。袁绍带领800骑,仓惶退回河北。