曹操现在的当务之急,是攻打兖州东南方向的徐州。首先在战略上,徐州是兵家必争之地,曹操不打,袁绍一定要打,莫若自己动手,拿下徐州,名归袁绍,实属曹操。其次,徐州牧陶谦与公孙瓒联盟,是袁、曹二人的后方威胁,打下徐州,兖州才能算得上巩固。再次,徐州只能由曹操打,因为黑山黄巾在冀州闹得厉害,一度联络袁绍部下哗变,攻下了邺城。袁绍正在一心讨伐黑山黄巾,无力将兵锋转向徐州。最后,一个最直接的原因,促使曹操下决心马上就打:他的父亲、故太尉曹嵩被陶谦的部下袭杀。
曹操的父亲先前去青州琅琊避难,曹操做稳了兖州刺史,便让泰山太守应劭将父亲曹太公接至兖州。走到陶谦的地界阴平县,守备此地的部将看曹太公的行装有许多车,一时起了歹念,杀进宾馆。曹太公让人掘开后院墙逃跑,他让小妾先从墙洞爬出去,可小妾太肥,堵在洞口,进退两难。士兵冲至后院,曹太公及小儿子曹德被杀。应劭见交不了差,逃奔袁绍去了。应劭,字仲远,有《风俗通》一书传世,记载当时的典章、名物、制度、风俗、人物。其侄应玚,后辟为曹操的府掾。
初平四年(193)秋,曹操亲自出征,临行前,他和陈留太守张邈告别,对家中人说:“我若不还,可依靠孟卓(张邈字)。”张邈少时,好游侠,与曹操、袁绍是一起玩的小兄弟。关东起兵后,有一次他触犯了盟主袁绍,袁绍让曹操杀了他。曹操说:“孟卓,亲友也。天下未定,干嘛自相残杀?”
曹军一连攻拔徐州十多座城池,打到徐州首府彭城时,与陶谦大战一场,陶谦败走,退保郯县。曹军攻郯不克,便攻下了虑县、睢陵、夏丘。曹操为发泄怒火,张扬他的孝道,竟下令屠城,所攻之处,鸡犬不留,在泗水岸边活埋并砍杀平民百姓十万口,泗水为之不流。
陶谦急了。次年,兴平元年(194)二月,他向公孙瓒委任的青州刺史田楷告急,田楷让刘备带所部一千多人去增援,陶谦又拨给他四千名丹阳籍的家兵。刘备一下子有了一支像样的队伍,干脆离开田楷归依陶谦。陶谦开了个豫州刺史的空头支票给刘备。正巧,曹军粮尽而退,刘备便屯兵小沛,给陶谦看家护院。
曹操回到兖州,见到张邈,相对垂泪,感慨生死。
四月,曹操以夏侯焞为东郡太守,司马荀彧、寿张令程昱留守甄城大本营,自率兵马再攻徐州。徐州地界的吏民听到曹军到了,如五雷轰顶,逃命不迭。曹军从徐州北部由西向东扫**,连下琅琊、东海,南下回军,于郯东击破刘备,陶谦吓得收拾细软,准备回老家丹阳去了。
就在这大功垂成之际,曹操接到从兖州而来的飞骑密报,曹操看后,大惊失色,立刻传令:火速回军兖州。
让曹操惊慌的消息是:他的好朋友张邈竟然与他的部将陈宫联合兖州一些郡县长吏和豪强大族发动兵变,迎接吕布入主兖州。
吕布投了袁绍之后,参加了袁绍对黑山黄巾的围剿。这一次,袁绍给了黑山黄巾以毁灭性的打击,他亲率大军扫**了黑山黄巾的根据地,黄巾帅左髭丈八等被斩,刘石、青牛角、黄龙左校、李大目、于根氐等全军覆没,屯壁屠尽。最后,袁绍与黑山黄巾最强悍的统帅张燕以及屠各胡、雁门乌桓在常山交战。这一仗,多亏吕布的将士冲锋陷阵,大破张燕。战后,吕布和他的手下杀性未消,又抄掠起袁绍境内的吏民。过了些天,吕布看情况不妙,袁绍可能要对自己下手,便主动要求率部南下洛阳。袁绍拜他做司隶校尉,又派了几十个壮士随他同去。
吕布上了路。一天夜里,他让人在自己营帐中鼓筝。夜深的时候,袁绍的壮士冲入帐中,将吕布的地铺砍了个稀烂,这才发现吕布早已逃走。次日回报袁绍,袁绍吓得关闭城门。
吕布没有回兵报仇,他觉得自己是一个孤独的骑士,因为关东没有他的根据地。他投向张杨,经过张邈的领地,二人谈得投机,临别之时,把手共誓。这件事,让袁绍知道了,大为恼怒;张邈也感到不安,他总觉得袁绍会让曹操杀了自己。此时,曹操做了一件失策的事情,他杀了前九江太守、陈留地界的名士边让,因为他讥议曹操。张邈、陈宫都是陈留地方名士出身,这样一来他俩与兖州的许多士族、官吏皆不自安,于是和张邈的弟弟张洪,以及许汜、王楷谋迎吕布。
吕布一听,正中下怀,他到张杨这里也待不下去。长安李傕和郭汜派人送金子给张杨,向他购买吕布的人头。吕布对张杨说:“干脆些,拿了吕布的头去买官吧!”张杨说:“我也不是那种小人。”
陈官带着兵马秘密地把吕布迎入濮阳。为了打消荀彧的疑虑,他宣称吕将军是来助曹操打徐州的。荀彧是何等机智的人,他马上觉察有变,速召东郡太守夏侯惇来镇甄城。夏侯惇太守在一个深夜到达,处死了一批与吕布通谋的官吏和将领,吕布出走。荀彧对东阿人程昱说:“现在只有大本营甄城和东阿、范县三处不动,其余皆叛,您有民望,必须速去镇抚。”
吕布的将领汜嶷已经进入范县,可程昱还是冒险找到县令靳允,对他晓以利害,告诉他:吕布不过是个匹夫,曹使君的智略乃上天所授,请您拒守范县,我守东阿,则可恢复州郡。”靳允流着眼泪发誓:“不敢有二心。”
直到靳允把汜嶷的头扔到跟前,程昱才直奔东阿,他先让骑兵守住黄河边上的仓亭津,从东岸濮阳而来的陈宫无法渡河,于是东阿吏民在程昱和东阿令枣祗的率领下构筑工事,拒城坚守。叛军一时无法进展。
曹操率军赶到东阿,他执住程昱的手:“没有你,我就无家可归了。”他任命程昱为东平相,守范县。此时吕布打甄城不克,回兵濮阳。曹操大喜,对手下人说:“吕布进入兖州,竟然不知道先据东平,切断亢父、泰山之间的道路,乘险要地势邀击我的归路,却还军濮阳,我知其无能了!”
曹操加紧平叛,他夜袭濮阳城西的吕布大营,大破而还。天亮的时候,遇上了吕布来援。从早上打到傍晚,曹操总算领教了吕布的英勇,曹军无法进攻,只能被动防御吕布的铁骑。眼见不能支撑,曹操以重金召募将士抵挡。这时,他的司马、陈留人典韦应募而出。
典韦让手下人伏着别动,说:“敌人距我十来步时再报告。”
“典司马,敌骑已距我十步了!”
“五步再报!”
“五步了!”
“敌军上来了!”
典韦大呼而起,挥戟杀人敌阵,砍杀数人,将士们随之冲锋,击退了吕布。晚上,曹操引军而回,拜典韦为都尉,担任自己的卫士长。
曹军继续进攻濮阳,城中大姓田氏做了曹军内应,打开城门。曹操让人烧了东门,表示不拿下此城,决不回返。可是他遭到了吕布强大的反冲锋,曹军大败而退。曹操策马而走,几个吕布的骑兵截住了他,乱兵之中,他们也未多加辨认,只是问他:“曹操在哪儿?”
“前面乘黄马而逃的便是。”
曹操突火而出,手被烧伤。到了营帐,亲自劳军,勉励再战。就这样打了一百多天。天上忽然飞来了黑压压的蝗虫,曹操下令回军甄城。吕布也没了粮食,退至乘氏,又被当地人李进击走,屯驻山阳。十月,蝗灾使得兖州发生了大饥荒,战事暂告停止。