黃巾起義:公元184年,張角相約信眾以“蒼天已死,黃天當立,歲在甲子,天下大吉”為口號興兵反漢;“蒼天”是指東漢,“黃天”指的就是太平道,而且根據五德始終說的推測,漢為火德,火生土,而土為黃色,所以眾信徒都頭綁黃巾為記號,象征要取代腐敗的東漢。但是,張角雖是太平道的領導,卻隻在冀州轉戰,沒有為其他軍團作調控,沒有同一目標,隻是占地死守或到處搶劫。加上當友方有難時,各軍都不會相救,漢軍就一個一個擊破。雖然黃巾起義令天下震動,但未能成就推翻漢室的霸業。
血戰官渡
劉備逃到袁紹的地盤鄴城(今河北臨漳西南),袁紹感到他與曹操之間一場決戰已到了不可避免的時候,他決定率領十萬精銳步兵和一萬騎兵奪取許都。
論實力,曹操比袁紹弱得多。袁紹的勢力本來就不小,後來又取得冀、並、幽、青四州之地,實力更加強大。他的長子袁譚、次子袁熙和外甥高幹分別守衛青、幽、並三州,後方穩固,兵精糧足。而曹操所占的地區,地盤很小,又殘破不堪,戰爭後還沒有完全恢複,物質比不上袁紹那樣豐富。兵力方麵,曹操也比不上袁紹,其總兵力不過幾萬人。據《武帝紀》記載,當時曹操投入前線的兵不滿萬,傷者師十二三。這個數字雖然不夠準確,但曹操兵力遠遜於袁紹是肯定的。
袁紹大軍來攻,許都震動,曹操安慰眾將說,我知道袁紹的為人,他誌大卻沒有智慧;氣勢雖猛,膽子卻很小;愛猜忌又少威信,手下兵多將廣卻賞罰不明。正是基於這種對袁紹透徹的認識,曹操才敢於在袁紹大軍即將壓境時抽身去進攻劉備。
公元200年二月,袁軍顏良等人圍攻白馬,拉開了大戰的序幕。四月,曹操親自率軍北上解白馬之圍,他采納謀士荀攸的計策,先進軍延津(今河南延津北),做出要渡河襲擊袁軍的態勢,吸引袁軍分兵西向,然後突然轉向去救白馬。曹操軍突然殺到,袁軍措手不及,顏良被曹軍殺死,袁軍大敗。曹操救出白馬軍民,沿黃河西撤。袁紹立即率兵渡河追擊曹操,曹操見追兵漸近,命軍士解鞍放馬,並將輜重丟棄在道路上。袁軍追兵趕到爭搶輜重,陣形混亂。曹操率領僅有的騎兵突然殺出,大破追兵,斬殺袁紹的另一員大將文醜。顏良、文醜是袁軍的名將,他們分別被殺,使袁軍的士氣受到打擊。曹操初戰獲勝,主動撤軍,在官渡扼守。
同年八月,袁紹大軍連營而進,東西數十裏,進逼官渡。曹操分兵堅守營壘,伺機而動,袁軍修築壁樓,堆起土山,從高處發箭射擊曹營,箭如雨下,曹營中的將士隻能蒙著盾牌走路。但壁樓土山不久就被曹軍的“霹靂車”轟毀了。接著,袁紹又挖地道,企圖從地下襲擊曹營,曹軍則在營中挖掘長溝進行防禦。就這樣,兩軍一攻一守,相持了近兩個月,久戰之下,曹操的處境極為困難。很多人背叛曹軍,響應袁軍。然而這種有利於袁紹的形式卻突然急轉直下。
十月,袁紹從和別運來糧草萬餘車,派大將淳於瓊帶萬餘人看守,屯於離袁紹大營40裏的烏巢。曹操親率精銳步騎5000人,乘夜從小路偷襲烏巢。到了烏巢,曹操命人四麵放火,袁軍大亂,淳於瓊拒營死守。消息傳到袁紹處,大將張頜主張急救淳於瓊,郭圖卻別出心裁地提出,不如現在就進攻曹軍大營。袁紹認為郭圖說得對,隻要攻打曹營,曹操就無家可歸了。於是派高覽、張頜率領重兵攻擊曹營,而隻派一支輕騎救援烏巢。高覽、張頜攻打曹營,久攻不下。這時,烏巢大敗的消息已經傳來,高、張二將無心戀戰,竟向曹軍投降。袁紹全軍大亂,一下子全垮了。慌忙之中,袁紹及長子袁譚各騎一匹馬逃遁,直奔黃河渡口,隨後又逃來一群騎兵,約有百騎,渡河到了黎陽北岸。這一仗,袁紹損失了七八萬人,還有武器、輜重、圖書、珍寶無數。當他跌跌撞撞走進部下蔣義渠營帳時,握著蔣義渠的手,無比傷感地說,我把自己的腦袋都交給你了。
從客觀條件上說,曹操本處於劣勢,但他能正確分析客觀條件,善於聽取別人的正確意見,采用正確的戰略戰術,使戰爭向有利於自己的方麵轉化,經過自己主觀上的努力,在官渡大戰中擊潰了最大的敵人袁紹,由他統一北方已是大勢所趨。
建安七年(公元202年),袁紹病死,他的兩個兒子袁譚、袁尚不和,發生火拚。袁譚不敵袁尚,向曹操乞降。
建安九年(公元204年)二月,曹操乘袁尚出兵攻打袁譚之際,進軍圍攻鄴城。袁尚率軍回救,依滏水(今滏陽河)為營,曹操進軍將其營寨包圍。袁尚害怕,請求投降,曹操不接受。袁尚乘夜逃跑,袁軍潰散。袁尚逃奔中山(今河定縣)。曹操招降鄴城守軍,城中守軍早已鬥誌崩潰,曹操攻破鄴城。次年正月,曹操又攻滅袁譚,冀州平定。袁尚兵敗後,逃奔幽州刺史袁熙。不久,袁尚、袁熙又逃奔三郡烏桓。建安十二年(公元207年),曹操攻破烏桓,徹底肅清了袁氏的勢力。