
汉灵帝光和末年,黄巾起义爆发,一时间天下大乱,河北各郡盗匪、豪杰也都趁乱聚众起兵。
常山郡真定县有位年青人名叫褚燕,为人剽悍,也招合一群少年,啸聚山林,做起了强盗。
褚燕逐渐在众山匪中有了名气,褚燕剽捍捷速过人,故军中号曰飞燕。褚燕决定率部返回家乡真定,一路上不少人来投靠,等到了真定县时,已经聚众达万余人。
当时博陵郡人张牛角随黄巾聚众起事,自号将兵从事。褚燕率所部去与张牛角会合。双方会合一处,褚燕推张牛角为帅,双方合兵有数万之众,成为冀州各部山匪中最大的一支。
张牛角与褚燕商量,一起去攻打钜鹿郡瘿陶县。张牛角、褚燕率众围攻瘿陶县城。城上一支流箭射来,正中张牛角,当时就跌下马来。
众人将张牛角救起,褚燕忙下令收兵,并找人给张牛角医治。
张牛角所中箭伤重,不久便一命呜呼。临终前,张牛角命令众人今后跟从褚燕,对众人嘱道:“必以燕为帅。”
张牛角死后,众人便拥立褚燕为帅。褚燕于是改姓为张,自此后唤作张燕。
其后跟随张燕的人众越来越多,有山匪孙轻、王当等率所部来投张燕,张燕以其为将,张燕此时部众已达百万。
张燕的势力遍及常山、赵郡、中山、上党、河内等地,这些地方都位于太行山麓,诸山谷皆相通,太行山南端有山名黑山,张燕于是以此为号,号称黑山军。
自此,太行山麓诸山匪都已黑山为号,当时有白波、黄龙、左校、五鹿、羝根、苦蝤、刘石、平汉、大洪、司隶、缘城、罗市、雷公、浮云、白爵、杨凤、于毒等二十余部,势力大的有二三万人,小的亦有数千人。
黑山军诸帅,因出身都是底层平民,不是地方冠盖士族,因此自相号字,除了张燕因轻捷被称为张飞燕,还有骑白马者被称为张白骑,称声大者为张雷公,其饶须者则自称于羝根,其眼大者自称李大目。
汉灵帝束手无策,于是遣使拜黑山军中的杨凤为黑山校尉,使其领诸山贼,得举孝廉计吏。
然而黑山军以张燕势力最大,张燕却没有被封为首领,于是张燕仍率众劫掠侵害河北诸郡,诸郡山贼弥漫,不可复数。
张燕在河北诸郡一番劫掠后,向朝廷显示了自己的实力,然后遣人至京都向朝廷乞求投降。
当时天下大乱,朝廷无力征讨,于是拜张燕为平难中郎将,承认了其黑山军首领地位,由其管理河北诸山谷事,并岁举孝廉计吏。
张燕至此更加肆无忌惮,不仅骚扰河北诸郡,开始逐渐南下寇略河内郡。河内郡靠近京师雒阳,于是朝廷派名将朱儁为河内太守,使其将家兵阻击张燕黑山军的骚扰。
后来董卓专权,迁天子于长安,天下群雄并起,张燕遂以黑山势力与豪杰相结。
初平二年(191年),关东诸侯盟主、渤海太守袁绍胁迫冀州牧韩馥让位,自领冀州牧。董卓控制的长安朝廷不予承认,董卓于是任命壶寿为新的冀州牧,壶寿率军往冀州赴任。
壶寿率军一路东行,到达河内,因兵少,不敢继续北上与袁绍交战,于是派人联络盘踞在河内郡朝歌县鹿肠山苍岩谷的黑山军首领于毒,准备与其联合。
于毒得信大喜,派人将壶寿迎入苍岩谷,双方自此联合,共同对付袁绍。
秋七月,于毒听说袁绍率军离开魏郡邺城,去东边防范占据渤海郡的公孙瓒,于是联合白绕、眭固等部黑山军十余万众攻略魏郡。
于毒又让白绕率兵去攻略与魏郡相邻的兖州东郡,兖州刺史刘岱所署的东郡太守王肱不能抵御,被黑山军白绕部打得大败。
袁绍得到消息,派部下曹操引兵入东郡,来截击黑山军。曹操率军在濮阳与白绕的黑山军相遇,将白绕打得大败。

于毒攻魏郡不下,此时白绕兵败消息传来,于毒只好与眭固等人撤兵,退回了苍岩谷。
此时,袁绍正与公孙瓒在界桥对峙。黑山军首领张燕得知于毒兵败退回苍岩谷的消息,决定出兵助公孙瓒,共同对付袁绍。
当年冬,张燕派部将杜长率一队人马,赶往界桥,与公孙瓒结盟,一同夹击袁绍。初平三年(192年)春,袁绍与公孙瓒界桥大战。公孙瓒兵败,杜长所率黑山军也被袁绍击溃。
此次黑山军被袁绍所败,是张燕的黑山军主力首次遇挫,一些人趁机逃走,脱离了黑山军。经此一役,张燕的黑山军人众稍散,实力有所削弱。
却说屯驻苍岩谷的于毒,听说曹操击败白绕后,被袁绍表为东郡太守,治东武阳。不久,曹操领军出屯顿丘。于毒得到消息,觉得复仇的机会来了。
于毒于是与壶寿、眭固等人商议,决定乘虚袭取东武阳。于毒、眭固率军一路东进,很快来到东武阳城下,将东武阳城团团包围。
曹操得到消息,并没有回师来救东武阳,而是采用围魏救赵之计,率军西进,直扑于毒在河内郡的老巢苍岩谷。
于毒得到消息,大惊,忙下令解了东武阳之围,即刻撤兵。于毒担心苍岩谷有失,命眭固率一队人马先行往救,自己率大军在后。
哪知曹操并未到苍岩谷,而是在黑山军归途中设了埋伏,眭固所部被曹操军所袭,被打得大败。于毒随后赶到时,曹操已经回东郡去了。于毒只得收拾眭固残部,撤回苍岩谷。
于毒回到苍岩谷,整顿兵马,准备寻机再找曹操复仇。当年夏天,兖州刺史刘岱被黄巾所杀,曹操被拥立为兖州刺史。第二年,即初平四年(192年)春,在南阳的袁术起兵来与曹操争夺兖州。于毒得到消息,大喜。
于毒立刻派人联络进入兖州陈留郡屯驻的袁术军,并派兵助袁术共击曹操。
谁知袁术根本不是曹操的对手,在陈留连战连败,最后逃往淮南去了。于毒派去助袁术的黑山军,也都被曹操所灭。
于毒此前接连在曹操处受挫,此次又兵败消息传来,于毒大骇,自此后不敢再去招惹曹操。
于毒接连兵败,正在郁闷之时,当年三月却传来一个好消息,原来界桥大战之后,袁绍与公孙瓒在冀州北部又接连数战,袁绍一直没有回到治所魏郡邺城,结果留守魏郡的士兵有人叛乱,来联络于毒,请求发兵去取邺城。
于毒闻听大喜,立刻联络太行山南麓黑山军各部,相约一起去攻邺城。于毒纠集黑山军各部等数万人来攻邺城,袁绍手下魏郡太守栗成率军迎战。
双方在邺城前大战,袁绍军少,被黑山军击败,栗成也兵败被杀。却说黑山军中有一部,其首领陶升,自号“平汉将军”,陶升见于毒等与栗成大战,便率军在西城攻入邺城。
陶升进城后,立刻命所部将邺城四门关闭,不让其他各部黑山军进城。原来陶升早有意投靠袁绍,陶升命令部下将袁绍及其僚属的家眷都保护了起来,又下令不许伤害城中百姓。
于毒等各部击败栗成后,正要进城,见陶升所部已经占领了邺城,还关闭城门,不让众人进城,于毒等黑山军各部将领见此情形,都气得大骂。
于毒等部见进不了邺城,只好到魏郡各县劫掠去了。
陶升准备车马,亲自带兵护送,将袁绍家及诸衣冠在州内者,送到北边的斥丘县,然后返回邺城坚守。
袁绍此时已经与公孙瓒各自罢兵,袁绍率军南返来到斥丘,得知经过,立刻以陶升为建义中郎将。袁绍回到邺城,整顿兵马。六月,袁绍亲自率军入河内郡朝歌县鹿肠山苍岩谷,征讨于毒。
袁绍大军围攻五日,攻破苍岩谷口,斩杀了于毒及长安所署冀州牧壶寿,斩黑山贼众万余级。眭固逃脱,去投奔河内太守张杨去了。
袁绍不解恨,遂寻着太行山北行,又攻破黑山军左髭丈八等部,所破各部全部斩杀。

袁绍军接连击破刘石、青牛角、黄龙、左校、郭大贤、李大目、于氐根等部,又斩首数万级,皆屠其屯壁。
黑山军首领张燕得知消息,大怒,召集剩余黑山军各部,又联合南匈奴屠各、雁门乌桓诸部,与袁绍大战于常山。
张燕有精兵数万,骑数千,袁绍此时又有吕布率军来投,双方实力势均力敌。
袁绍命吕布出战,吕布领亲随健将成廉、魏越等数十骑飞驰冲入张燕军阵,一日内冲入三四次,每次都能斩首而出。
双方连战十余日,张燕兵死伤虽多,袁绍军也十分疲惫,遂各自退去。
袁绍此次对黑山军的征讨,使得黑山军元气大伤,失去众多山贼将领、军马不计其数,从此以后,黑山之势不复当年。
建安元年(196年),袁绍属下东郡太守臧洪起兵反叛袁绍,臧洪派人来向黑山军首领张燕求援,请求发兵解围。
自常山之战后,袁绍又接连控制了青州、并州,加上原本控制的冀州,实力愈发强大,而此时张燕的黑山军已经不能与其抗衡了。因此,张燕接到臧洪的求援信后,只是象征性起兵呼应,并不敢真发兵去援。
建安四年(199年),袁绍率军将公孙瓒包围在易京,公孙瓒派儿子公孙续突围,来向张燕求援。
张燕得信后,晓得唇亡齿寒的道理,一旦公孙瓒覆亡,自己的处境就更危险了,于是尽起黑山军十万去救援公孙瓒,并派人送信给公孙瓒,让其坚守待援,到时举火为号。
张燕派去的送信人,被袁绍兵抓获,袁绍看了张燕书信,大喜,决定将计就计。袁绍仍派人将信送与公孙瓒,然后举火诱公孙瓒出击,公孙瓒以为救兵到了,立刻率兵出击。
结果公孙瓒被袁绍所设伏兵袭击,被打得大败,只好回到城内坚守。
袁绍军于是掘地道到城楼下,毁坏其望楼,渐渐到达中央的土丘。公孙瓒自料必败无疑,先杀掉自己的妻子儿女、姐妹,然后引火自焚。
张燕率军走到半路,得知公孙瓒已败亡,只好撤兵。自此后,张燕龟缩山中,不敢与袁绍军争锋。
直到建安十年(205年),张燕见袁氏败亡,冀州易主,曹操成为冀州新主人,张燕遂遣使求佐王师。
曹操接到张燕的降书大喜,立刻上表拜张燕为平北将军。张燕于是率众到邺城拜见曹操,被封为安国亭侯,食邑五百户。曹操将其留在了邺城居住。
自此后,汉末与黄巾军齐名的黑山军不复存在。张燕薨后,其子张方嗣爵。张燕子孙嗣爵一直延续到西晋。