初平四年七月,幽州中郎将公孙瓒突然发兵四万攻打州牧刘虞,但刘虞早有准备,依托幽州治所蓟县(今北京)城防坚守不出,并引外族鲜卑、乌桓骑兵背后袭扰公孙瓒。
公孙瓒久攻不下,于是假装大败,引刘虞出城追击。
刘虞轻敌大意,果真率军出城追击,结果被公孙瓒精锐骑兵白马义从凿穿中军,于万军丛中直接斩杀刘虞。州牧军大败亏输,蓟县陷落,鲜卑和乌桓军仓惶逃窜,返回北方草原。
就在公孙瓒收拢降兵败将,将刘虞一家全部斩尽杀绝,正要意气风发地接收幽州军政大权时,袁绍派颜良为大帅,文丑、麴义为副,带着五万大军进犯幽州。
虽然公孙瓒接收了刘虞的残兵败将后也有四五万人,但之前攻城时损耗太多,此时这四五万人还没磨合过来,几乎就是乌合之众。公孙瓒仓促应战,屡战屡败,被冀州军一路追杀到了辽西郡北部区域。
就在此时,之前败走的鲜卑、乌桓、乌丸等数千外族骑兵又打着给刘虞报仇的旗号杀了回来,与冀州军前后夹击,将公孙瓒打得丢盔弃甲,最后只剩千余人躲回辽西郡治所阳乐城中坚守,苟延残喘。
部下劝公孙瓒向袁军投降,但公孙瓒不仅不听,还杀了劝他投降的人,于是众叛亲离,连自己的亲兵都逃跑了许多。
自料必败的公孙瓒于是在初平四年冬天的某个夜晚缢杀了自己的家眷后引火自焚,幽州一代诸侯自此落幕。
鲜卑、乌桓、乌丸等外族不敢招惹袁绍大军,见公孙瓒已死,刘虞大仇得报,于是自行退去,袁绍由此尽得幽州全境。
在收拢了公孙瓒、刘虞的残兵败将后,袁绍大军手下大军已逼近20万大关。
本来是没这么多的,但看到张循吸收了青州黄巾后兵力暴涨到20多万,袁绍紧迫之下也开始在冀州横征暴敛、强拉壮丁,以备大战,因此在冀州就有了十多万的兵力。再加上幽州的数万,因此兵力得以逼近20万大关。
但即使如此,袁绍也不认为自己能与张循对拼,他还要拿下青州、徐州,并与袁术、刘表、李傕等人联合,才有击败张循的可能性。