东汉末年,宦官专政,吏治废弛,民不聊生,农民起义连绵不断,中平元年(184年)爆发了大规模的黄巾军起义。黄巾军领袖张角,钜鹿(今河北鸡泽县东北)人,起义之前,张角自称大贤良师,尊奉黄、老之道,蓄养弟子。用神道符水为人治病,病人跪拜首过,病或痊愈,颇得百姓信任。张角分别派遣他的弟子周行四方,发动百姓,十余年间徒众达十万人,青、徐、幽、冀、荆、扬、兖、豫八州之人,没有不响应的。有的变卖家产,流移奔赴,堵塞道路。郡县不解其意,反而说张角是以善道实行教化,而为民所归。张角把徒众设置三十六方,方即大将军的称号。大方一万多人,小方六七千人,各设立渠帅。提出“苍天已死,黄天当立。岁在甲子,天下大吉。”用白土书写京城城门及州郡官府府门,皆作甲子字。中平元年大方马元义等先收荆、扬数万人,与张角同时举事。马元义数次往来于京师洛阳,以中堂侍封諝,徐奉等为内应,约好在三月五日,内外俱起,皆包黄巾作为标志,因此当时人称为黄巾,也有称为蛾贼(意思是人数众多)。张角称天公将军,张角的弟弟张宝称地公将军,张宝的弟弟张梁称人公将军。所到之处,焚烧官府,攻打城邑。州郡官吏大多仓惶逃之。旬日之间,天下响应,京师震动。汉朝廷遂拜卢植为北中郎将,持节,以护乌桓中郎将宗员为副将,率领北军五校士兵,又发天下各郡之兵共同征讨黄巾军。张角军连战失利,败走广宗(今河北威县东)。卢植筑围挖壕,并制造云梯,正当要攻下广宗时,灵帝派遣小黄门左丰视察军队,有人劝卢植以物贿赂左丰,卢植不愿这样做。左丰因一无所获而回归上言灵帝说:“广宗之贼极易攻破,但卢中郎固垒息军,而等待天诛贼。”灵帝大怒,以槛车惩治卢植,减死罪一等;随即又派遣东中郎将陇西董卓来代替卢植,结果董卓在下曲阳(今河北晋县西)被黄巾军打得大败。这时皇甫嵩为左中郎将,领命持节,与右中郎将朱俊共发五校、三河骑士,又招募精兵勇士,共有四万多人,征讨颍川的黄巾军。后来又派遣骑都尉遭曹操带兵前往助战,黄巾军被打得大败,曹操乘胜追击,进讨汝南、陈国的黄巾军,二郡也被曹操攻下,曹操连占三郡,名声大震。东汉又进击东郡(今河南濮阳县南),诏皇甫嵩讨伐张角。
中平元年冬十月,皇甫嵩与张角的弟弟张梁在广宗发生激战,张梁兵精士众,皇甫嵩不能攻克;到第二天,就闭营休兵以观黄巾军的变化,当得知黄巾军的意志稍为松懈,就连夜布兵,天将拂晓之时,驱兵直赴黄巾军的阵地,战斗持续到午后四时,黄巾军失败,张梁被敌人斩首,黄巾军被敌人杀死者三万多人,而赴河死者五万多人。在此战斗之前,张角已经得病而死,敌人仍不放过他,就开棺戳尸,把首级取到京师,悬挂示众。十一月,皇甫嵩又向下曲阳的张角的弟弟张宝进攻的同时,东汉朝廷又选拜王允为豫州刺史,征讨黄巾军的其他分支,黄巾军相继被打败,士兵共被俘获者达数十万人。
南阳黄巾军张曼成起兵,自称神上使,兵众数万人,杀郡太守褚裒,声势很大。后来张曼成被后任太守秦颉杀害,黄巾军就推举赵弘为帅,黄巾军又逐渐强盛,兵众遂达十多万人,占据宛城(今湖北荆门县南)。朱俊与荆州刺史徐璆及秦颉合兵围攻赵弘,敌人从六月到八月围城,一直攻克不下;有司上奏弹劾朱俊,主张对朱加以惩治,司空张温上疏灵帝为朱俊辩解:“昔秦用白起,燕任乐毅,都经过旷年历战,才得以克敌。朱俊在讨伐颍川的黄巾军时已立有战功,引师南指,方略已定;临军易将,为兵家之大忌,应该宽限时日,责其成功”。灵帝听从张温之言而没有惩治朱俊。朱俊开始向赵弘发动进攻,并杀死了赵弘。黄巾军的将帅韩忠又重新占据宛城,以抗拒朱俊。朱俊采取声东击西的办法,一方面鸣鼓攻打城的西南角,黄巾军以全力抵抗来自西南方向敌人的进攻,使黄巾军的兵力受牵于此;一方面朱俊自己率领精锐将士潜到城的东北角,乘虚而进入宛城。韩忠率兵退入小城,被敌人层层围困,韩忠意觉不能破敌,准备投降。但朱俊却认为黄巾军投降只是迫于目前的窘势,不完全出于真心,他说:“兵固有形同而势异者。过去秦、项之际,民无定主,因而对来归附给予赏赐,对未归附者施以规劝、招降。而现在天下一统,惟有黄巾叛逆。纳降不足以劝善,讨伐却足以惩恶。如果受黄巾投降,更升逆意,使黄巾有利则战,无利则降,纵长敌寇,决非良计!”因此继续对黄巾发动紧急攻势,连战仍攻克不下。朱俊登高望城,对他的司马张超说:“贼人现在外围坚固,内营逼急,乞降不受,欲出不得,所以必会决一死战。万人一心势尚不可挡,又何况有十万多人呢!我们不如先撤围,把军队合并入城,韩忠看到撤围,肯定会自动出来,一旦出来士兵的意志就会涣散,而这正是破敌之道。”随即敌人撤围,韩忠果然出战,朱俊进而发动攻击,斩杀黄巾军万余人。太守秦颉因对韩忠恨之入骨,因而杀了韩忠。
黄巾军的余部又推孙夏为帅,还归屯居宛城。朱俊又发动急攻,司马孙坚率众先登;癸巳,攻下宛城。孙夏败走,朱俊追到西鄂(今河南南阳市北)精山(在西鄂南),打败孙夏,黄巾军被杀者又达一万多人。于是南阳黄巾军败散。
张角率先举起反抗大旗,各地纷纷响应。诸如黑山、白波、黄龙、左校、牛角、五鹿、羝根、苦蝤、刘石、平汉、大洪、司隶、缘城、罗市、雷公、浮云、飞燕、白爵、杨风、于毒(各起义军的别号,如骑白马的就称为张白驹,轻捷快速的称为张飞燕,声音大的称为张雷公,胡须长的称张羝根等等)等各自起兵,大者二三万人,小者不下数千人。汉灵帝讨伐不及,就使出招降的手段,派人拜杨凤为黑山校尉,统领其他各支黄巾军,并授以朝廷官职。黄巾军大股被敌人平定,但响应黄巾军而起义的及小股黄巾军依然还有一定的势力及影响。
中平五年(188年)二月,黄巾军的小股余部郭大在西河白波谷(今山西汾城县东南)起义;六月,益州黄巾军马相攻杀刺史郗俭;八月,汝南(今河南新蔡县北)葛陂黄巾攻设郡县;十月,青州、徐州的黄巾军复起,攻打郡县,杀官吏。汉献帝初平二年(公元191年)十一月,青州黄巾军攻打泰山,被太守应劭打败,转而攻打渤海,与公孙瓒在东光(今河北东光县东)发生激战,结果又被公孙瓒打败。初平三年(192年)四月,青州黄巾军在东平(今山东东平县)击杀衮州刺史刘岱,东郡太守曹操在寿张打败黄巾军,黄巾军投降。建安十二年(2107年)十月,黄巾军杀济南王赟。小股黄巾军虽不是浩浩荡荡,但也搅得统治者坐卧不安。整个黄巾军起义,历时之长,断断续续,二十多年,蔓延之广,中原自不必说,延及吴蜀。东汉政权终被推翻。