刘备在陶谦死后,曾一度出任徐州牧,后徐州被吕布攻占,刘备投奔曹操。曹操认为刘备是个英雄,先后表他为豫州牧、左将军。曹操攻占徐州不久,淮南袁术准备逃往青州往依袁绍,曹操派刘备去截击,袁术北上不得,呕血而死。[] 刘备到达下邳后,袭杀徐州刺史车胄,占据徐州,自己屯于小沛。曹操令刘岱、王忠率兵征讨,被刘备击败。[]
建安五年(公元200年)正月,董承等人谋诛曹操,事泄被杀。曹操决定东征刘备。[] 诸将皆说:“与您争夺天下的人是袁绍,如今袁绍要来讨战,您却弃之不顾,而要东征刘备,倘若袁绍乘机从背后进攻,该怎么办呢?”曹操说:“刘备是人杰,现在不除掉他,以后一定会成为心腹大患。袁绍虽然有远大的志向,但反应迟钝,不会马上出兵。”于是急速进军,以迅雷不及掩耳之势击破刘备,刘备逃奔袁绍处。[
袁绍是当时北方最强大的一股势力,也是曹操统一北方最强大的敌人。袁氏一门,自袁绍曾祖袁安以下,“四世居三公位”,“门生故吏遍于天下”,势力本就很大,后袁绍取得冀、并、幽、青四州之地,实力大增,有军队数十万人。袁绍以其长子袁谭、次子袁熙、外甥高干分守青、幽、并三州,后方稳固,兵精粮足。他挑选精兵十万、战马万匹,志在一举消灭曹操。
建安五年(公元200年),袁绍命大将颜良等进兵白马(今河南滑县),自率大军进屯黎阳(今河南浚县东),向曹操发动进攻,拉开了大战的序幕。曹操的实力比袁绍弱得多,曹操所占的黄河以南地区,是残破不堪、尚未恢复生产的四战之地,物资储备也不如袁绍。其总兵力大概不过几万人,投入前线的兵力据《武帝纪》说“兵不满万,伤者十二三”。裴松之认为此数不准确,曹操的兵力不会如此之少,但曹操兵力远逊于袁绍却是毫无疑问的。
袁绍大军来攻,许都震动。曹操安慰众将,分析了袁绍的性格缺陷:“吾知绍之为人,志大而智小,色厉而胆薄,忌克而少威”,虽然“兵多而分画不明,将骄而众令不一”,在这种情况下,袁绍地盘虽大,粮草虽足,但只能是“为我奉