中平元年(公元184年),黄巾起义爆发,曹操被拜为骑都尉,受命与左中郎将皇甫嵩等人合军进攻颍川的黄巾军。右中郎将朱儁先到,与黄巾军波才部作战,失败,皇甫嵩退守长社(今河南省长葛县东北),面对波才的围困,趁夜纵火出击,使黄巾军惊乱后撤。此时曹操率军赶来,联合皇甫嵩、朱儁大破黄巾军,斩首数万级[] 。不久后,曹操调任济南国(今山东济南)国相。在济南相任内,曹操治事如初。济南国有县十余个,各县长吏多依附贵势,贪赃枉法,无所顾忌。曹操之前历任国相皆置之不问。曹操到职,大力整饬,一下奏免十分之八的长吏,济南震动,贪官污吏纷纷逃窜。“政教大行,一郡清平”。
当时正是东汉政治极度黑暗之时。朝廷徵还曹操为东郡太守,拜为议郎,曹操不肯迎合权贵,遂托病回归乡里,春夏读书,秋冬弋猎,暂时隐居了。
当时天下纷乱,发生了冀州刺史王芬联合南阳许攸、沛国周旌等地方豪强,谋划废黜灵帝立合肥侯的事件。王芬等人曾希望曹操加入他们,但被曹操拒绝。曹操在推辞的理由中说:“废立皇帝是天下最不祥的事了。古时有衡量轻重、计算成败而后施行的人,伊尹、霍光便是如此。这两个人都怀着至忠的诚心,以宰相的地位,凭借执政大权,加上同众人的愿望一致,故此能实现计划,成就大事。如今,各位只看到他们当初的轻而易举,而没有看到现在的困难。用这种非常的手段,想一定达到目的,难道不觉得危险吗?”[] 后来王芬果然事败自杀。又有西北金城郡(今甘肃兰州)的边章、韩遂杀死刺史和太守,率兵十余万反叛朝廷,天下为之骚动。
中平五年(公元188年)八月,汉灵帝为巩固统治,设置西园八校尉,曹操因其家世而被任命为八校尉中的典军校尉。
陈留起兵
中平六年(公元189年),汉灵帝驾崩,太子刘辩登基,何太后临朝听政。大将军何进想趁灵帝驾崩、宦官失势之机诛灭十常侍,但没有取得何太后的支持。于是何进采纳袁绍的建议,不听陈琳的劝谏,便征召停留在河东郡的边将董卓率其部众进京,以便于胁迫何太后同意诛杀宦官。[] 曹操得知后笑道:“阉竖之官,自古至今都有,只是世主不应该把权力交给他们,使他们达到这种程度。既然要治他们的罪,那么只需要诛杀元凶,派一个狱吏就足够了,何必纷纷召外地将领入京?如果要对宦官赶尽杀绝,事情必定会泄露出去,我已经料到他会失败了。”[
董卓尚未抵达京城,何进已被宦官下手谋杀。同年九月,董卓入京,执掌朝政,把汉少帝废为弘农王,而改立其弟陈留王刘协,即汉献帝;又派人把弘农王母子毒死,自称太师,专擅朝政。曹操见董卓倒行逆施,不愿与其合作,遂改易姓名逃出洛阳。[] 曹操到陈留后,“散家财,合义兵”,且首倡义兵号召天下英雄讨伐董卓。
初平元年(公元190年)正月,后将军袁术、冀州牧韩馥、豫州刺史孔伷、兖州刺史刘岱、河内太守王匡、渤海太守袁绍、陈留太守张邈、东郡太守桥瑁、山阳太守袁遗、济北相鲍信等人一同举兵于关东,袁绍被众人推为盟主,曹操行奋武将军。当时袁绍屯河内,袁术屯南阳,孔伷屯颍川,韩馥在邺城,张邈等人屯酸枣。[] 二月,董卓胁迫献帝迁都长安(今陕西西安西北),自己则焚毁宫室,挖开王陵,劫掠人民,致使洛阳方圆两百里荒芜凋敝无复人烟。而关东联军惧怕董卓精锐的凉州军的战力,无人敢向关西推进。曹操说道:“我们举义兵是为了除暴乱,如今大军已合,诸位还有何虑?如果董卓得知山东起兵后,仰恃天子的圣威,占据洛阳一带的险要地方,遣兵东进控制天下,尽管他的行动是不道义的,对我们来说仍然是很大的忧患。但现在董卓焚烧宫室,劫持天子西迁,海内震动,百姓不知归属,这是上天要董卓灭亡的时候,一战而天下可定,机不可失。”于是引军西进,即将进据成皋,张邈也派部将卫兹分兵跟随曹操。曹操行至荥阳汴水(今河南荥阳西南),与董卓大将徐荣交锋大败,士卒死伤甚多,曹操自己被流矢所伤,所骑战马也受了伤,曹操的堂弟曹洪将马让给曹操,才使曹操幸免于难。徐荣见曹操虽众少却能力战许久,认为酸枣不易攻下,也引兵撤回。[] 当时诸军兵十多万,日日置酒高会,不思进取。曹操回至酸枣后,出言责备他们,并向联军建议:“诸君听我之计,让渤海太守引河内之众兵临孟津,酸枣众将取成皋、据敖仓、封堵轩辕、太谷,将险要之地全部占领;袁将军率南阳大军进军丹、析,攻入武关(今陕西丹凤东南),震动三辅。然后我们都深沟高垒,不与董卓交战,并更设疑兵,让天下看到我们的优势,让天下加入我们讨伐逆贼,如此天下可以立马平定。如今我们举兵是为了大义,却迟疑不肯进,令天下失望,我为诸位感到羞耻!”关东诸将不肯从。关东诸军名为讨董卓,实际各自心怀鬼胎,意在伺机发展自己势力。不久,诸军之间发生摩擦,相互火拼。联军至此解散。[
荥阳之战后,曹操兵少,于是与夏侯惇等人前往扬州募兵。扬州刺史陈温、丹阳太守周昕给了曹操一共四千多名兵士。曹操回军到龙亢时,大部分士卒都背叛了。到了轾、建平,曹操又重新招募一千多士兵,进驻河内郡。
袁绍与韩馥谋立幽州牧刘虞为帝,曹操对袁绍说:“董卓之罪,暴于四海,我们集结大众、兴义兵,远近无不响应,正因为我们的行动是正义的。如今幼主微弱,受制于奸臣,却没有昌邑亡国之兆,而一旦改易天子,天下人怎么接受?诸君北面称臣,我自西向。”袁绍还曾经得到一枚玉印,一次曹操在座时,袁绍把这块玉印推到他的肘边,曹操表面大笑,内心却十分厌恶。后来,袁绍、韩馥还是决定立刘虞为帝,但刘虞始终不肯接受。
初平二年(公元191年),黑山贼于毒、白绕、眭固等率十多万人攻打魏郡、东郡,东郡太守王肱不能抵御。曹操引军入东郡,在濮阳击破白绕。袁绍因此表曹操为东郡太守,治所在东武阳。
初平三年(公元192年),曹操驻军顿丘,于毒等人攻打东武阳。诸将建议曹操回军救援,曹操欲图趁机袭击敌军本屯,对诸将说:“孙膑救赵而攻魏,耿弇欲攻西安而攻临菑。让敌军知道我军西进而回撤,则东武阳之急自解。如果他们不回,我就能攻破他们的本屯,他们却必不能拿下东武阳。”于是,曹操引兵西入山,攻打于毒等人的本屯。于毒得知后,放弃攻打东武阳而回军。曹操邀击眭固,又在内黄与匈奴於夫罗交战,皆大获全胜。[
初平三年(公元192年),青州黄巾军大获发展,连破兖州(治昌邑,今山东省菏泽市巨野县东南)郡县,阵斩兖州刺史刘岱。济北国相鲍信与州吏万潜等人来到东郡迎曹操领兖州牧。曹操和鲍信合军进攻黄巾,战于寿张之东,鲍信战死。曹操“设奇伏,昼夜会战”,终于将黄巾击败。当年冬天,他获得降卒三十余万,人口百余万。曹操收其精锐,组成军队,号称青州兵。[] 这样,曹操又有了一支颇具战斗力的军队。
袁术与袁绍交战,向公孙瓒求援。公孙瓒让刘备屯高唐,单经屯平原,陶谦也屯兵发干,以此进逼袁绍。曹操帮助袁绍击破陶谦诸军。[]
初平四年(公元193年)春天,袁术因粮道被刘表切断,引军进入陈留,屯兵封丘,黑山军及南匈奴於夫罗部都帮助袁术。袁术令部将刘详屯匡亭,曹操率兵攻打刘详,袁术带兵救援,双方激战,曹操大获全胜。袁术兵败,退守封丘,曹操率军包围,围势未成,袁术又逃往襄邑。曹操追到太寿,决开渠水灌城。袁术逃往宁陵,曹操再次追击,袁术只得逃往九江。
夏季,曹操回到定陶(今山东省菏泽市定陶区)。当时陶谦与阙宣共同举兵,攻取泰山的华、费二县,接着率军攻入兖州南部的任城。秋季,曹操率军征讨陶谦,进兵徐州,向东南扩展势力。攻克徐州十余城。曹操与陶谦大战于彭城,陶谦军败退,死亡的人数将近一万,泗水为之不流。(《后汉书》记载曹操“凡杀男女数十万人,鸡犬无余,泗水为之不流”[] )陶谦退守郯县,不敢出战。不久曹操军粮将尽,撤围回军。