袁曹兩個集團在中原十年混戰中,為戰勝群雄曾攜手並肩,劃分勢力範圍,袁紹收河北,曹操圖河南,兩人隨著勢力的膨脹而外親內疏,明爭暗鬥,兩大集團的決戰是必然之勢。但官渡之戰在兩大集團都尚未準備充分,尤其是袁紹剛滅公孫瓚,尚未喘息又投入大戰,在公元200年爆發,則是雙方都未料及的。事情原委,還得從河內張楊說起。
張楊原是丁原部將,與呂布同僚相好。董卓殺丁原,當時張楊回并州募兵,於是據有河內,在十年混戰中與袁紹相聯絡。公元198年末,曹操擒殺呂布,解除了北進的最大後顧之憂,立即對袁紹擺出了對抗姿態,在公元199年四月進兵河北,略取河內。曹操圍呂布,袁紹暗中支持張楊聲援。曹操打入張楊內部,指使張楊部將楊醜殺張楊,公開投靠曹操,挑起事端。張楊部將眭固又殺楊醜,明白宣布投歸袁紹,並重兵控制河內郡的戰略重鎮射犬。
夏四月,曹操揮師臨河,派曹仁、史渙渡河擊殺眭固,佔領河內郡,打入袁紹的領屬區,建立了河北前進基地。袁紹對曹操此舉自然十分惱怒,他曾經致書公孫瓚,勸公孫瓚投降,除去嫌隙,而公孫瓚不予理會。於是袁紹奮力滅公孫瓚,當曹操進兵河內時,袁紹也取得了勝利。袁紹凱旋之後,立即宣布兵伐許都,時間約在公元199年五六月間
袁紹宣布進兵許都,在內部引起了爭議。郭圖、審配等認為討伐曹操,易如反掌,「今時不取,後難圖也」。沮授認為,袁軍討伐公孫瓚,師出歷年,「百姓疲敝,倉庫無積」;況且曹操奉迎天子,建都許昌,「今舉師南向,於義則違」。為了擺脫政治上的被動局面,同時爭取時間,休整士卒,沮授提出「修耕戰緩搏敗曹」的建議,沮授說:「應當先派使臣向天子報告平滅公孫瓚的捷報,獎勵農耕,休息百姓。如果上達天子的言路斷絕,再宣布曹操一手遮天的罪惡,然後進兵駐屯黎陽,逐步經營河南,多造舟船,整飭兵器,分路派出精銳騎兵,擾亂曹操統屬區,讓對方得不到安靜,我方以逸待勞,這樣可以穩操勝券。」但是急於登上帝位的袁紹卻聽不進去,他要與曹操立決雌雄。他既不顧政治上的被動局面,也不顧士民連年徵戰的疲勞,更不顧部屬的紛爭意見,不取穩操勝券的戰略,而妄聽郭圖的「公師徒精勇,將士思奮」的阿諛頌詞,走上黷武的道路,以圖「早定大業」,在不利的時機發動官渡之戰,加深了隱伏的敗機。
公元200年二月,袁紹正式南伐,發布討伐曹操的檄文,其中有一段數列曹操挑動兵戈的罪惡說:「往年我軍北伐,徵討公孫瓚,強敵叛逆,抗拒整一年。曹操趁此機會,暗中與公孫瓚勾結,打著援助我軍的旗號,實際想在背後發動突然襲擊,所以領兵臨近黃河,正在調集舟船渡河,被我方外交人員覺察其陰謀,正趕上公孫瓚被剿滅,才使得曹操把鋒芒縮回,陰謀沒有得逞。」這道檄文載於《後漢書·袁紹傳》。李賢注引《獻帝春秋》說:「曹操渡河攻佔河內,聲言援助袁紹討伐公孫瓚,實際是要偷襲袁紹大本營根據地鄴城。恰好公孫瓚敗亡,袁紹也識破了曹操計謀,立即回軍,曹操退守敖倉。」這就是說,曹操進兵河內,挑起袁曹公開對立,成為官渡之戰的導火線。
曹操既佔了地利和實利,又企圖偷襲袁紹根本,氣度狹窄的袁紹被激怒了,貿然發動官渡之戰,承擔了黷武的罪責。袁曹較量,曹操確實道高一尺,戰鬥還未開始,已在氣勢和道義上先勝一著。