曾在郡中作过门下书佐。他相貌英伟,声音洪亮,深得
侯太守器重,把自己的女儿嫁给他,又派他到涿郡(今属河北)卢植处习读五经。后仍在郡中做官。
太守
刘基因事获罪被召至京师洛阳交廷尉处置,公孙瓒为他驾车,像仆役一样服侍他。刘基将被流放到日南郡(今越南广治省)的时候,公孙瓒备好酒肉在北芒山(即邙山,今河南洛阳北)祭辞自己的祖先,他举杯祈祷:“以前为人子当尽孝道,而今为人臣当尽忠心,理应随同太守共赴日南。日南多瘴气,恐怕不能身还,就此别过列祖列宗。”说完又拜了两拜,便慷慨激昂的站了起来,在场人无不落泪叹息。刘基在赴日南途中被赦免而还。公孙瓒被举为孝廉,做了郎官,被任命为辽东郡(今辽宁辽阳市)附属国的长吏。
有一次跟随数十名骑兵外出巡逻关塞,看到数百名鲜卑骑兵,公孙瓒就退到空亭对随行队伍说:“如不主动进攻必将被杀。”于是手执长矛策马带队冲入鲜卑队伍,杀伤数十人,虽辛免于死,自己也损失过半。鲜卑人以此为戒,再不敢轻易越进关塞。公孙瓒升迁为涿县县令。
光和(公元178年-公元183年)年间,
边章、
韩遂叛乱,朝廷从幽州(今北京城西南)征发三千精锐骑兵,并给予公孙瓒都督行事的符节,统帅此三千骑兵。公孙瓒率军到蓟中时,渔阳(今北京市密云县西南)人张纯引诱辽西乌桓首领
丘力居等叛乱,攻占右北平郡(今河北丰润东南)、辽西郡属国的城市。公孙瓒以三千骑兵追讨张纯等叛贼,立下战功,升为骑督尉。此时,属国乌桓首领
贪至王率众归降公孙瓒。公孙瓒又升为中郎将,封为都亭侯,进驻属国,此后的五六年间,与北方少数民族争战不断。
汉灵帝中平五年(公元188年),乌桓丘力居部到青州(今山东淄博临淄北)、幽州、冀州(今河北临漳西南)掠夺。公孙瓒与张纯、丘力居等战于属国石门,张纯等大败,张纯于是抛下妻儿逃入鲜卑境内。公孙瓒继续追击,由于太深入,反被丘力居围困于辽西管子城二百余日,粮尽士溃,士卒死伤大半。丘力居军也粮尽疲乏,远走柳城。朝廷诏拜公孙瓚为降虏校尉,封都亭侯,又兼领属国长史。公孙瓒于是统领兵马,守护边境。每次一听到敌人来袭,公孙瓒马上声疾色厉,作战时像是打自己的仇人似的,甚至一直打倒夜深。从此乌桓都害怕公孙瓒的勇猛,不敢再来进犯。公孙瓒常与身边数十个善于骑射的人都骑白马,相互间为左右翼,自号“白
马义从”。
朝廷派宗正东海郡(今山东郯城县)人刘虞(字伯安)为幽州州牧。刘虞到任后,派遣使臣到少数民族中晓以利害,责令他们献上张纯的首级。丘力居等听说刘虞到了,纷纷派遣使者前来沟通归附之事。公孙瓒担心刘虞立功,暗中派人在途中暗杀这些使者。少数民族明白此事后,便绕道到刘虞处。刘虞上报朝廷撤掉驻防军队,只留下公孙瓒统万余步兵、骑兵屯驻右北平。
汉灵帝中平六年(公元189年)三月,张纯被其门客
王政杀掉并把首级送给刘虞。刘虞因安抚少数民族有功而被授予太尉之职,封为襄贲侯。不久,又迁刘虞为大司马,公孙瓒为奋武将军,封为蓟侯。
汉献帝初平二年(公元191年),青州黄巾军攻打渤海(今河北南皮东北),聚众三十万,欲与黑山军会合,公孙瓒率步骑两万人在东光南大破青州黄巾,斩首三万余。青州黄巾军弃辎重,奔走渡河。公孙瓒等他们过到一半时出击,再次大败黄巾军,死者数万,俘虏七万余人,车甲财物无数,于是公孙瓒威名大震。
皇帝想东归洛阳,派刘虞之子
刘和逃出长安,偷偷出武关去找刘虞,让刘虞率兵前来相迎。刘和途经
袁术驻地,将此事告知了袁术。袁术扣留了刘和,让刘和给刘虞写信,答应等刘虞率兵前来为袁术后援,一起赴长安。公孙瓒知道袁术会叛变而制止刘虞,刘虞不听。公孙瓒担心袁术知道后恨他,派他堂弟公
孙越率千余骑兵到袁术处相结好,而暗地又让袁术扣留刘和并夺占刘和兵马。因此,公孙瓒与刘虞的矛盾越来越深。
袁术遣公孙越帮助
孙坚攻周昂,公孙越被流矢射中而死,公孙瓒怒道:“我弟之死,祸起于袁绍。”于是出兵驻扎在磐河(今河北境内)准备报复袁绍。袁绍惊恐万分,把渤海郡太守印交给了公孙瓒堂弟公孙范,派他到南皮,想以此与公孙瓒结援。公孙范于是背叛袁绍,以渤海兵力协助公孙瓒,攻破青州、徐州黄巾军,兵势日益强盛,进驻界桥(故址在今河北威县境内)。公孙瓒自己任命严纲为冀州州牧,
田楷为青州州牧,
单经为衮州(今山东金乡县西北)州牧,并配置了郡首县令。
汉献帝初平三年(公元192年),袁绍屯军广川县(今河北枣强县东北),与公孙瓒战于界桥南二十里处。公孙瓒有精兵三万。袁绍命其将麴义领精兵八百在前,布强弩千张于两翼。公孙瓒轻视袁绍兵少,纵骑兵出战。麴义命士兵伏于楯下不动,等公孙瓒军到十步前,一时同发,公孙瓒大败。袁绍捉住了严纲兵斩其首。麴义追公孙瓒到界桥,公孙瓒率兵还击,再次被打败,于是公孙瓒逃到蓟县(今北京大兴县),在县城东南另筑小城自守,与刘虞临近,渐渐结下仇恨。
汉献帝初平四年(公元193年),刘虞担心公孙瓒反叛,于是率兵十万攻打公孙瓒。当时,公孙瓒的部曲放散在外,仓卒欲从东城逃走,刘虞的士兵不习战,又下军令不准骚扰百姓,久攻不下。公孙瓒于是招募精兵数百人,顺着风势放火,趁势杀入刘虞兵营,刘虞大败。刘虞与他的部下往北逃到居庸县(今北京延庆县东)。公孙瓒三天就攻破了居庸城,活捉刘虞及其妻子儿女回到蓟县。此时董卓已死,献帝派使者
段训给刘虞增加封地,令其督统六州,升迁公孙瓒为前将军,封易侯。公孙瓒诬陷刘虞与袁绍谋取称帝,胁迫段训斩刘虞及其妻子儿女于蓟市。公孙瓒将刘虞的首级送到京师,被刘虞的旧部下尾敦在路上劫走并安葬。公孙瓒杀了刘虞之后,得到了整个幽州,日益骄矜,不恤百姓,记过善忘,睚眦必报。
汉献帝兴平二年(公元195年),刘虞的从事渔阳
鲜于辅、
齐周、骑督尉
鲜于银等率幽州兵马想为刘虞报仇,因燕国(今北京大兴县)阎柔素有恩义,他们便推举阎柔为乌丸司马。阎柔招集鲜卑、乌丸等兵马,共得汉兵、胡兵数万人,与公孙瓒所置渔阳太守
邹丹战于潞河(今朝白河)之北,大败公孙瓒军,斩杀邹丹。乌桓峭王也率其部落的人及鲜卑骑兵七千余骑,随鲜于辅迎接刘虞之子刘和与袁绍将麴义,合兵共十万攻打公孙瓒,大败公孙瓒于鲍丘,斩首二万余。于是,代郡、广阳、上谷、右北平各杀公孙瓒所置长官,与鲜于辅、刘和兵联合,公孙瓒屡战屡败,于是逃回易京(故址在今河北雄县西北)坚守。临易河挖十余重战壕,又在战壕内堆筑高达五六丈的土丘,丘上又筑有营垒。堑壕中央的土丘最高,达十余丈,公孙瓒自居其中,以铁为门,斥去左右,令男人七岁以上不得进入,只与妻妾住在里面,又囤积粮谷三百万斛。公孙瓒又让妇人习为大声,使声音能传出数百步,用来传达命令。公孙瓒又疏远宾客,致使身边没有一个亲信,谋臣猛将都渐渐疏远了。从此以后,很少出来打仗。
汉献帝建安三年(公元198年),袁绍传书给公孙瓒,想跟他释和,公孙瓒没有答复,反而增强守备。袁绍于是大兴兵攻打公孙瓒。先是公孙瓒一别将被围,公孙瓒不肯相救,说:“救一人,那以后众人都会只等救兵而不肯力战。”等到袁绍来攻时,公孙瓒的界桥别营自度不能自救,而公孙瓒必不肯相救,众人或降或逃。袁绍直接攻到了城门前,公孙瓒派他的儿子公孙续向黑山(今河南浚县西北)黄巾军求救,又想亲自率兵冲出重围,占据西南山,仰仗黑山军,切断袁绍军的后路。长吏关靖劝谏他说:“现在您的将士都各怀叛离之心,已无力再战,他们之所以能固守是顾惜他们的故乡老少,而把将军您当成主心骨,将军如能持久坚守,袁绍自然会退兵,四方军队一定又可以会合了。若将军现在弃易京而走,军队会失去后镇,易京覆灭指日可待。将军失去根基,流落荒野,怎么
成就事业呢?”公孙瓒于是决定不离开易京,等待其子搬来救兵,内外夹攻袁绍。
汉献帝建安四年(公元199年)三月,黑山帅张燕与公孙续率兵十万,分三路相救公孙瓒。援兵还没到,公孙瓒秘密派人送信给公孙续,让他率五千骑兵于北隰之中,举火把为应,公孙瓒就从城内出战。袁绍劫得了这封信,如期举起火把。公孙瓒以为救兵到了,率兵出击。袁绍设伏兵袭击公孙瓒,公孙瓒大败,又回到城内坚守。袁绍于是掘地道到城楼下,毁坏其望楼,渐渐到达中央的土丘。公孙瓒自料必败无疑,先杀掉自己的妻子儿女、姐妹,然后引火自焚。