由於統治者的殘酷剝削,農民紛紛破產,流民相枕於道,加以災荒相繼不斷,廣大農民陷於死亡境地。桓帝末年,司隸及豫州一帶,“饑死者什四五,至有滅戶者”。因此,從和帝以來,農民的反抗鬥爭,幾乎連續不斷。到了桓、靈時期,農民起義更加頻繁,規模更大,範圍更廣。如桓帝時,公孫舉聚眾三萬人,在泰山、琅玡一帶起義,活動於青州、徐州、兗州等地。靈帝時,許昭在會稽起義,眾以萬數,自稱大將軍,與官軍奮戰多年。還有西北的羌族,長期堅持反抗鬥爭;南方少數民族起義,也接連不斷。在各地起義浪潮普遍高漲的情況下,終於爆發了更大規模的、全國性的農民大起義。這就是張角領導的黃巾大起義。
張角是巨鹿(今河北平鄉縣)人,太平道的首領,自稱為“大賢良師”。他以傳布太平道為名,利用行醫治病為手段,在農民中進行秘密活動,組織和發動農民起義。
張角還派遣8名弟子,分別到各地進行傳道。經過十幾年的努力,參加太平道的人越來越多,遍及青、徐、幽、冀、兗、豫、荊、揚八個州,入道的群眾多達數十萬人。他們將入道的群眾編為三十六方,大方一萬多人,小方六七千人,每方設“渠帥”一人,由張角統一領導。
中平元年(184),正值甲子年,張角準備發動起義。他們在道徒中傳播“蒼天已死,黃天當立,歲在甲子,天下大吉”四句起義口號。“蒼天”指東漢王朝,“黃天”指起義軍。還派人在京城洛陽的寺門及州郡官府的牆上,用白土寫上“甲子”兩個大字,作為起義的暗號和標誌。
同時,又派大方渠帥馬元義調荊、揚二州的數萬名起義群眾,趕到鄴縣(今河北臨漳縣)集中,配合京城及各地的起義。馬元義幾次到洛陽,聯係宦官封諝、徐奉等做內應,約定這年三月五日起義。但在二月間,起義軍的叛徒唐周,向東漢政府告密。東漢政府下令搜捕,馬元義在洛陽被捕犧牲,太平道的徒眾、百姓1000多人遭到殺害。同時,又下令冀州官府,搜捕張角等人。
張角得知計劃泄露,連夜派人通知各方,立即舉行起義。起義軍頭裹黃巾,作為標記,當時人稱為“黃巾”。
黃巾軍由張角統一指揮。張角自稱“天公將軍”,他的弟弟張寶稱“地公將軍”,張梁稱“人公將軍”。起義軍攻打州郡,焚燒官府,地方官吏聞風逃竄。在短短的幾天之內,全國各地紛紛響應,京師為之震動。
黃巾軍英勇善戰,戰果輝煌,沉重打擊了東漢王朝。麵對黃巾軍的節節勝利,東漢政府驚恐萬狀。他們調兵遣將,部署對洛陽的軍事防禦。首先任命外戚何進為大將軍,統率左右禦林軍,負責保衛京師;又在洛陽之外的八個重要關口,包括函穀、太穀、廣成、旋門、伊闕、轅、孟津、小平津等,設重兵加強防守。接著,分別派盧植、皇甫嵩、朱儁率領官軍,進攻黃巾軍的主力。
那時,黃巾軍的主力,分布在潁川、南陽、冀州三個地區。這年的四月,皇甫嵩、朱儁率領官軍四萬餘人,首先撲向潁川地區。潁川的黃巾軍在波才的領導下,主動迎戰,一舉擊敗朱儁所部官軍。皇甫嵩見勢不妙,領兵退守長社(今河南長葛縣東北)。黃巾軍乘勝追擊,把皇甫嵩圍困在長社。本來形勢發展對起義軍很有利,但是他們“依草結營”,給了敵人可乘之機。皇甫嵩乘風縱火,對起義軍發起突然襲擊;漢靈帝又派官兵來增援,結果起義軍失利,數萬名義軍遭到血腥屠殺。皇甫嵩和朱儁乘勝進攻汝南、陳國(今河南淮陽)的黃巾軍,波才率領的餘部和彭脫領導的黃巾軍,先後都受挫失敗。