東漢末年,天下大亂,地處王朝北部邊陲的軍官公孫瓚利用手中的兵權,藉機擴大自身的勢力範圍,迫於兵威,幽、並、冀、青河北四州的許多郡縣均在其掌控之中。漢獻帝初平二年(191年),公孫瓚率領精銳部隊,以討伐黃巾軍爲名,積極向南擴張,兵鋒一度到達青州。爲爭奪冀州的實際控制權,剛剛入主冀州的“袁紹集團”與長期盤踞幽州的“公孫瓚集團”於是年冬在界橋進行了一場大戰,史稱“界橋之戰”。袁紹利用“先登”死士與強弩兵配合步兵方陣大敗公孫瓚軍,斬殺公孫瓚任命的冀州牧嚴綱及手下千餘人。該戰役的勝利使得袁紹成功地阻止了公孫瓚的南侵態勢,大大挫折了幽州集團的銳氣,爲其在冀州樹立穩固的統治根基起到了決定性的作用。此戰之後,雙方仍然爭戰不斷,相繼進行了如“龍湊之戰”、“巨馬水之戰”等戰役,戰爭狀態持續了將近兩年,以雙方互相耗盡兵糧及董卓借漢獻帝之名遣使和解告終。
在此後雙方的戰略對峙期間,公孫瓚犯了一個嚴重的錯誤——殺掉了自己的行政上司幽州牧劉虞。與袁紹停戰後,公孫瓚退回薊縣(今北京大興區),在縣城東南另築小城自守,與劉虞臨近,且二人對戎狄政策出現嚴重分歧,雙方明爭暗鬥,漸漸結下仇恨。初平四年(193年),劉虞擔心公孫瓚反叛,於是率兵攻打公孫瓚。當時,公孫瓚的部曲放散在外,欲從東城逃走。劉虞的士兵不習戰,又下軍令不準騷擾百姓,久攻不下。公孫瓚隨即招募精兵數百人,順着風勢放火,趁勢殺入劉虞兵營,劉虞大敗。劉虞與他的部下往北逃到居庸縣(今北京延慶東)。公孫瓚很快又攻破了居庸城,活捉劉虞及其妻子兒女。此時董卓已死,獻帝派使者段訓給劉虞增加封地,令其督統六州,升遷公孫瓚爲前將軍,封易侯。公孫瓚誣陷劉虞與袁紹謀反稱帝,脅迫段訓斬劉虞及其妻子兒女於薊市。劉虞爲人品德高尚,出身皇族,在士族中影響很大,其任幽州牧後政績卓著,對內追求寬政,發展經濟,安撫百姓,贏得了治下民衆的廣泛支持;對外執行懷柔的民族政策,深得少數民族民衆的愛戴。據《英雄記》記載,“虞之見殺,故常山相孫瑾、掾張逸、張瓚等忠義憤發,相與就虞,罵瓚極口,然後同死。”可見,劉虞的死使得士族階層、普通百姓和邊疆少數民族三股實力對公孫瓚產生了極大的不滿。加之,公孫瓚得到整個幽州之後,日益驕矜,不恤百姓,記過善忘,睚眥必報,促使當地的這三股勢力形成合流,對其發起報復。
195年(漢獻帝興平二年),劉虞的從事漁陽鮮于輔、齊周、騎督尉鮮于銀等率幽州兵馬欲爲劉虞報仇,因燕國(今北京大興)閻柔素有恩義,便推舉閻柔爲烏丸司馬。閻柔招集鮮卑、烏丸等諸部兵馬,共得漢兵、胡兵數萬人,與公孫瓚所置漁陽太守鄒丹戰於潞河(今朝白河)之北,大敗公孫瓚軍,並斬殺鄒丹。
坐鎮冀州的袁紹敏銳地發現了幽州內部的激烈矛盾,便派遣劉虞之子劉和與麴義率兵,聯合烏桓與鮮卑諸部,南北夾擊公孫瓚集團。公孫瓚屢戰屢敗,只得逃回易京(故址在今河北雄縣西北)。公孫瓚感覺到自己在幽州的統治已然鬆動,更沒有能力吃掉袁紹集團,故而決定轉爲守勢,臨易河挖十餘重戰壕,又在戰壕內堆築高達五六丈的土丘,丘上又築有營壘。塹壕中央的土丘最高,達十餘丈,公孫瓚自居其中,又囤積糧谷三百萬斛。此後,公孫瓚日益疏遠賓客,漸漸地身邊一個親信也沒有了。
建安三年(198年),袁紹傳書給公孫瓚,想與其釋和,公孫瓚卻沒有答覆,反而增強了守備。袁紹於是大興兵馬攻打公孫瓚。此時,公孫瓚又犯了第二個嚴重的錯誤——喪失軍心。《英雄記》記載,一次公孫瓚有別將爲敵所圍,公孫瓚不肯相救,並說:“救一人,使後將恃救不力戰;今不救此,後將當念在自勉。”《孫子兵法?九地篇》講到:“投之亡地然後存,陷之死地然後生。”西漢名將韓信應用這一理論,背水結陣、奇正並用,以三萬烏合之衆大破趙軍二十萬,獲得了“井陘之戰”的勝利,演繹了古代軍事史上以少勝多的傳奇。“井陘之戰”中,韓信始終是同將士們在一起直面生死的,正是將領無畏捨身的精神激勵了全軍的鬥志,從而爆發出驚人的戰鬥力,這纔是孫子“置死地而後生”的本意;而公孫瓚則是把軍士放在絕地而自己置身事外、無動於衷,這樣怎麼能夠讓人信服,誰又肯爲這樣的將軍去浴血奮戰呢?果然,這一舉動喪失了士兵對公孫瓚最後的信任。等到袁紹來攻時,公孫瓚南界的別營守軍感覺難以抵擋,而又想到公孫瓚必不肯相救,軍士無人死戰,衆人或降或逃。南界守軍的迅速瓦解,使得袁紹軍直接攻到了易京,並圍困該城。不過,此前精心構築的易京城防還是延緩了袁紹的進攻,公孫瓚趁機派他的兒子公孫續向黑山(今河南浚縣西北)軍求救,又想親自率兵衝出重圍,佔據西南山,仰仗黑山軍的援助,切斷袁紹軍的後路,以解易京之圍。然而,長吏關靖勸諫道:“如今將士都各懷叛離之心,已無力再戰,他們之所以能固守是顧惜自身故鄉的老少,而把將軍您當成主心骨,將軍如能持久堅守,袁紹自然會退兵,四方的別營軍隊又可以會合。如果將軍現在棄易京而走,軍隊會失去後鎮,易京覆滅指日可待。將軍失去根基,流落荒野,怎麼成就事業呢?”公孫瓚聽後決定不離開易京,等待其子搬來救兵,內外夾攻袁紹。客觀上講,關靖的這段話還是起到了一定的作用,至少爲公孫瓚稍稍穩住了本已動搖了的軍心,延緩了公孫瓚部的敗亡。
同年三月,黑山帥張燕與公孫續率兵來救被袁紹圍困的公孫瓚部。援兵未到,公孫瓚便秘密派人送信給公孫續,令續率騎兵於北隰之中,舉火把爲應,自己就從城內出戰,內外合擊,擊潰袁紹軍的包圍。不巧袁紹劫得了這封密信,將計就計,如期舉起火把。公孫瓚以爲救兵到了,率兵出擊。袁紹設伏兵襲擊公孫瓚,公孫瓚大敗,又回到城內堅守。袁紹掘地道到城樓下,毀壞其望樓,漸漸到達中央的土丘。公孫瓚自料必敗無疑,先殺掉自己的妻子兒女、姐妹,然後引火自焚。至此,袁紹徹底消滅了盤踞幽州的“公孫瓚集團”,雄霸青、幽、冀、並四州,統一了黃河以北的大片地區。
就這樣,名噪一時的白馬將軍公孫瓚覆滅了,《三國演義 第二十一回曹操煮酒論英雄關公賺城斬車胄》僅借滿寵之口簡要地講述了此事。公孫瓚的覆滅,看起來只是因爲軍事秘密泄露造成的,非常的偶然,但這偶然之中卻有着很多的必然因素髮揮着作用。首先,公孫瓚殺死名臣劉虞,使得氏族勢力、廣大民衆和戎狄諸部都對他產生了不滿,再加上其獨攬幽州大權後,又回到自己“對外強硬、不恤百姓、睚眥必報”的老路上,使得幽州當地三股勢力對他的不滿變成了怨恨,促使他們合流,共同對抗自己。可以說,公孫瓚在處理劉虞的問題上大失民心,袁紹則很好地把握了這個機會,合縱連橫,令公孫瓚陷入了空前的孤立;持續施壓,贏得了競爭中的主動。其次,作爲一個以軍人身份起家的割據勢力首領,軍隊是公孫瓚統治的有力武器和根本保證,在後期作戰中其疏遠舊有部下的做法和不救被困部衆的行爲,激起了軍士們的極大不滿,在失去民心之後,又喪失了軍心,致使軍隊戰鬥力陡然下降,甚至是一擊即潰。如此一來,他的統治也就真的走到頭了。因此,“失去民心軍心、上下離心離德”纔是公孫瓚敗亡的根本原因,“通信被截、秘密泄露”只是一個導火索,讓他的敗亡更加迅速一些罷了。