袁绍从初平元年主持讨伐董卓的同盟之时开始,直到建安五年在官渡被曹操击败之时,是全中国最有力量、最能号召的一个军政领袖。在官渡战败以后,他的四个州地盘依然掌握在手,比起曹操的兖、豫、徐三个州仍要大些。在名义上,他也不比曹操低:他是大将军、司隶校尉,兼冀州牧(加上他大儿子袁谭所领的青州,二儿子袁熙所领的幽州,与外甥高斡所领的井州),而曹操至少在名义上只不过是“行车骑将军”,兼司空而已(虽则曹操在事实上也控制了徐州与兖州、豫州,及整个的许县朝廷)。袁招的兵、军粮、财力,也一向是超过了曹操所有。由于祖先与伯父、父亲,都做过三公级的最高官吏,中国到处都有袁家的门生故吏。他本人也极会交朋友(最好的朋友包括张邈、伍琼、许攸、河颞),这也不是曹操所能比得上的。总之,他倘若早一点向曹操摊牌,胜利应该是属于他的一方。他的最大失策,是坐视曹操把献帝从洛阳接往许县,给了曹操挟灭子以令诸侯的机会。他的一名部下,原任冀州“骑都尉” 的沮授,早就劝他抢先,把献帝从洛阳迎到邺县,他却听了郭图与淳于琼两人的话,顾虑到有了献帝在身边,就不能不遇事请旨,“从之则权轻,违之则拒命”,反而不太方便(曹操后来却感觉到有了献帝在身边,没有一点不方便)。平心而论,在建安元年曹操迎接献帝的时候,虽未必赤心忠于汉室,却至少是十分尊重汉室的,曹操当时给全国人士的印象,是既忠且勇;面袁绍是只知扩充自己地盘,对君父的安危漠然无动于衷的小人。曹操在许县重建议汉朝的朝廷(也替献帝迎筑了宫殿,供应丁宫中的开销),使得全中国的人民与官吏耳目一新。曹操以献帝的名义,任命袁绍为三公级的“太尉”,仕命自己为“大将军”。袁绍不肯接受,因为太尉的地位是在大将军之下(住东汉窦宪之后确是如此;西汉太尉与丞相、御史大夫是在大将军之上)。曹操有修养,识时务,知道打袁绍还不是时候,便特别客气,以“大将军”的名位让给袁绍,而自降为“行车骑将军”(代理性质的车骑将军)。实权,曹操当然不肯放弃;·司隶校尉、录尚书事·可以不再担任,换上一个“司空、录尚书事”,不仅实权差不多,而且名义上升为三公之一。为什么曹操不苒做司隶校尉?可能也是由于袁绍反对。袁绍在灵帝末年便当了这个司隶校尉的官;其后在初平元年,因为反对董卓,或是怕董卓,而离开洛阳出走,把“节”挂在洛阳的”上东门”(东边靠北的一个城门),等于是正式辞去了本兼各职。然而,到了冀州,他却仍旧自称“司隶校尉”,以这个名义号召各州、各郡的官吏,申讨董卓(董卓所主持的朝廷,为了安抚他,发表他为勃诲郡太守.他也照样就职,当起司隶校尉兼勃海太守来。一面申讨董卓,一面做董卓所间接任命的官,真是怎么说也说不通)。从建安元年到建安五年的春天,曹操、袁绍二人不曾交手。曹操忙于创建许县的新朝廷,打张绣、打吕布、打袁术;袁绍忙于消灭公孙瓒,吞并幽州、青州、井州。袁绍虽则以多谋寡断著名,却也晓得他自己与曹操两雄不能并立。于是,在灭了公孙瓒以后不久,他就调齐了一万匹马、十万名兵士,准备一举而渡过当时的黄河,冲到许县,把献帝抢来,安置在自己的邺县。曹操赶紧凑了若于兵马,进驻于(中牟之东的)官渡,等候袁绍大兵渡河,一决雌雄。这时候,董承的倒曹阴谋突然暴霹,麓承及其在许县的同谋者都被逮捕、灭族。刘备在徐州也就杀了曹操的徐州刺史车胄对曹操翻脸。曹操决定,暂时不理会袁绍,先解决了刘备再说。有人劝他不可如此。万一他在打刘备的时候,袁绍渡河来夹攻,岂不两面受敌?曹操说:“不要紧。袁绍不会决定得那么快。倘若我先打袁绍,那刘备倒是很可能从后面来对我夹攻的。”曹操的判断,果然没有错。他去打刘备的时候,一直打到刘备离开徐州,打到俘虏了关羽,袁绍均不曾动。袁绍的左右,也未尝没有人才,例如田丰。田串曾经向袁绍建议,说:“和你争天下的是曹操。曹操现在到东边去打刘备了。刘备不是很短时间可以击溃的,所以曹操要被刘备拖住在那里。你何不领大军袭击曹操的后方,一去就可以成功。这是很难得的机会;用兵,就要抓住机会。”袁绍说:“你的意见很对。不过,我的小儿子有病,我一时不能离开家。”田丰气得用拐杖打地下,汉:“唉,大事已去!”等到刘备被曹操击溃以后,田丰劝袁绍不可轻易行动。因为,曹操已无后顾之忧。田丰的新建议是:固守黄河北岸的四个州,“外结英雄,内修农战,培养实力。同时,不让曹操培养实力,用少数的精兵渡河,骚扰曹操治下的各州各郡,时而击左,时而击右,叫曹操的兵疲于奔命,叫曹操治下的人民不能安于所业。我未劳而彼已困。不到三年,就可以把曹操消灭。”袁绍不仅不接受田丰的这·次的建议,而且叫入把他拖下去,加了手铐脚镣,关在牢里,袁绍率领大军进驻黎刚。同时,命令陈琳起草了一篇檄文,大骂曹操。这一篇檄文,与唐朝骆宾土的“讨武曌檄”,同为千古名作。 陈琳的文章确是不坏。这一篇檄文,从曹操的祖父、中常侍曹腾骂起,说曹腾与其他两个太监左棺、徐璜,“并作妖孽,饕餮放横,伤化虐人”;又说曹操的父亲曹嵩.本是一个“乞丐”(叫化子),作了曹腾的养子以后,对权门大送红包,买得了三公级的官位(太尉)。骂到曹操本人,檄文说曹操是一个“奸阉遗丑”,·好乱乐祸”。曹操参加讨伐董卓的同盟,于袁绍及别的州牧、刺史、太守、国相,都不敢出击,而只知饮酒高会之时,有勇气单独对董卓的部队进攻,虽则被董卓的大将徐荣打败,其实是虽败犹荣。陈琳却在檄文里说曹操“愚佻短虑,轻进易退,伤夷折衄,数丧师徒’(文人的一支笔,确是可怕。曹操后来不好,打董卓的时候何尝不好?比当时身为盟主,而一动也不动的袁绍,好得多)。陈琳把曹操凭自己本事而发迹的经过,都一概说成由于袁绍的“弃瑕录用”:是袁绍保举了曹操为东郡太守,保举了曹操为“兖州刺史”,而且在曹操被吕布偷占了兖州之时,是袁绍派兵由北边来打败吕布,才把曹操救了下来(这袁绍打吕布的事,未见于任何其他史料)。在这一篇讨曹的檄文之中,袁绍叫陈琳列举了曹操的若干具体罪状,说曹操杀了正官直谍的前九江太守边让、议郎赵彦;拷打了太尉杨彪;发掘了梁孝王的坟墓;用了七百个精兵围住献帝所住的宫闸,名为保卫,实则监视;曾经勾结公孙瓒,企图夹攻袁绍。这些罪状都是事实,并不冤枉,不过袁绍自己也做了很多目无汉室,违法乱纪的事。陈琳的文笔极有力量。这篇文章的结尾一段,既典稚而又雄健,气壮声洪:“幕府(袁绍是大将军,大将军有幕府,因此这幕府两个字便是袁大将军的代称)奉汉威灵,折冲宇宙,长戟百万,胡骑千群。奋中黄(贲)育(乌)获之士,骋良弓劲弩之势,并州(刺史高斡之军队)越太行,青州(刺史袁谭之军队)涉济漂,(袁绍本人之)大军泛黄河,以角其前,荆州(刘表之军队)下宛叶,而掎其后。雷震虎步,并集虏廷,若举炎火以炳飞蓬,覆沧海而沃漂炭,有何不消灭者哉?当今汉道陵迟,纲弛纪绝,操以精兵七百,围守宫阙,外称陪卫.内以拘执,(幕府)惧篡逆之祸因斯丽作,乃忠臣肝脑涂地之秋,烈士立功之会也,可不勖哉!”这一篇檄文,是发给以刘备为首的全国各州、各郡、各国的长官吏的,篇首列了刘备的官衔:“选署左将军,领豫州刺史”,可见袁绍在当时是如何尊重刘备的政治地位与号召力。袁绍所动员的兵究有多少?我们在一千七百多年以后的今天,很难考出确数。檄文中的“长戟百万,胡骑干群”自然是夸大之词,《后汉书·袁绍传》所说袁绍“简兵十万,马万匹”当较近于事实。曹操能集中起来的兵力,要比袁绍的少(当时,有了几千兵便已经够资格作为中国政治舞台上的一个角色。吕布和早期的刘备均始终只有几千人,刘备在小沛扩充部队到了一万,就已经遭了吕布之忌)。曹操的基本武力,是他所收编的青州黄巾。这些被收编的青州黄巾号称三十万人,其中老弱居多,曹操一一加以遣散,只留下了年轻力壮的汉子,其总数可能在十万以上,但不会超过二十万,这十万多兵,曹操不能够都调到官渡前线,因为在许县的西南,尚有袁绍的同盟者——荆州牧刘表。刘表的军队也差不多是十万人左右。我的猜度是:曹操用来抵抗袁绍的兵力,至多只是全部力量的一半,也就是五万至七万人左右(这只是一个猜度而已)。《三国志》魏的部分说,当时曹操的兵不满—万,似乎不确。袁绍在陈琳所写的檄文中,说袁谭、高干、刘表,将—起对曹操采取行动。事实是,刘表始终观望(到了袁绍既败以后很久,他才叫刘备向许县进军一次,刘备到了叶县便撤军退回新野)。袁谭与高干也许有所行动,但现存史料上毫无记载,可见即使有过,规模也不甚大。大战在建安五年二月开始,袁绍命令郭图、淳于琼、颜良等几位大将,先攻曹操派驻在(河南滑县之北的)白马津的刘延。 不知为了什么缘故,曹操挨到四月间,才亲自带了关羽、张辽等人,到白马津来救;同时分兵攻打袁绍所派兵防守的延津县,以分散袁绍的注意力。袁绍果然以重兵加强延津的前线,曹操便突然移军奔向白马津,颜良这时候沉不住气,不等关羽、张二等人到达,就率兵一口气走了十几里,前来迎战,被关羽一马当先,刺死于万军之中,砍下了头。袁军阵容大乱,曹操就指挥关羽、张辽等人及其部队,解了白马津之围,救出刘延与刘延手下的兵,合起来,沿着当时黄河的南岸向西面走,一直走到延津县城之南,被袁绍的兵追上。袁绍带了刘备与文丑及五六干名骑兵,到达汉朝酸枣县东南的一个叫做延津的渡口,渡过当时的黄河(这延津从宋朝起,代替酸枣成为县的名称,位于今日黄河之北,在开封的西北,偏北,中牟的正北,偏东。今日中牟与延津之间的黄河,在当时是济水。济水发源于济源县,流向山东利津)。曹军在延津抵挡丁袁军一阵,获胜;杀了文丑。曹操退到济水以南,今日中牟之东的官渡,扎营,袁绍留在延津,扎营。在历史中有决定性的官渡之战,在八月开始。袁绍移动他的大军,进至延津西南,中牟西北的阳武,沿着现成的河旁沙堆,造了东西长达几十重的营地。袁绍的战术构想,是伸展两翼,包抄曹军,加以捕捉。曹操不退,把自己的部队也分成若干单位,对袁军的各单位抵抗;但是,究竟人数太少,不够分配,抵抗了以后伤亡颇重,袁军乘势猛攻。这时候,在袁绍的一方面,颜良、文丑虽死,尚有张部、高览、淳于琼等若干得力的勇将。在曹操的一方面,虽则关羽不久便离开了,走往袁营去找刘备,却也还有张辽、徐晃、乐进、于禁,以及夏侯停、夏侯渊、曹仁,撑住了场面。张辽是井州雁门郡马邑县人,做过丁原、董卓、吕布的部下,在吕布被杀以后投降了曹操,被曹操以献帝的名义拜为中郎将,封为关内侯(马邑是今日的山西朔县)。张辽与关羽是大同乡,很谈得来(关羽的出生地,是井州河东郡解县。解县的故城,在今日山西虞乡县之西)。张辽知道了关羽念念不忘刘备,迟早有一天会走,便报告了曹操,曹操很佩服关羽的义气,同时也深知留了关羽的身体,留不住关羽的心,他在听到张辽的报告以后,不曾采取任何措施,以防阻关羽走。关羽井非是想走就走的人。他固然想回到刘备的身边,却山要先做出一两件事,报答曹操对他的厚爱。于是,他斩了颜良(可能也斩了文丑;至少是帮助了徐晃等人击溃文丑)。关羽在自己认为已经报答了曹操以后,就把曹操所给的一切(包括“汉寿亭侯”的印),都包扎在一起,放在所住的地方,留函告别。曹操的左右,要去追捕关羽;曹操说:“他也是:各为其主,让他走吧。”张辽没有一个像刘备的故主值得怀念;他死心塌地为曹操服务到底(汉寿是东汉的一个县,故城在湖南常德的东北。今日的汉寿县,在常德东南。亭侯,是爵位,地位次于县侯,高于关内侯及列侯)。徐晃也是并州人,不仅是关羽的大同乡,而且是小同乡;同为河东郡的郡民。关羽是解县人,徐晃是杨县人(杨县在今日洪洞县东南)。他原是白波首领杨奉的部下,在建安元年于曹操击败杨奉之时投降了曹操,其后打吕布、打刘备,都立了功。他在白马津,“从破颇良”;在延津,“破文丑”(《三国志》魏的部分的原作者,似乎把“破文丑”的首功记在这位徐晃的账上)。后来,他又在延津之南的“故市”,与曹操的另一部将史涣,击毁了袁绍的若干运粮车辆。乐进是兖州东郡卫县的人(卫县在今日山东观城县之西)。他身材短小,胆量很大,做了曹操的帐下吏。帐下吏相当于副官或卫兵队长,回家乡募得了一千多人,升为“假司马”(代理性质的司马之官,司马所管的是营中的种种杂务.仃时也带队伍作战)。不久,曹操又升他为“陷阵都尉”。都尉是汉朝正式的军阶,“陷阵”二字似乎是曹操所想出来的。乐进也参加了打吕布、打刘备。在对袁绍的战争之中,他的最大功劳是杀了淳于琼。曹操的另一猛将,是本家弟弟曹仁。曹仁的祖父曹褒,是曹操父亲曹嵩的养父曹腾的哥哥。曹仁从来喜好骑马、射箭、交朋友,在灵帝末年天下大乱之时,他自己有了一千客人的徒众,在淮河泗水之间的皖北、苏北游来苗去,成为非兵非匪、亦兵亦匪的一支武力。他把这一支武力带到曹操的营中,曹操任命他作“别部司马”,不久又升他为所谓“厉锋校尉”。其后,打袁术,打陶谦,打吕布,打张绣,到汝南打刘备与黄巾首领刘辟,他都很卖力。他所带领的,是骑兵。曹操也派他偕同史涣等人深入袁绍的后方,拦截袁军的运粮车辆,烧毁粮食。他的官位,这时候已被升为遥领“广阳大守”,以“议郎”的名义在曹军之中当骑兵的“督”。换句话说,曹仁当了政府的参议,兼任曹军的骑兵司令。曹操的另一位本家弟弟是曹洪。曹洪的父亲是谁?裴松之以来,没有人知道。王沈所写的(魏书),只说了曹洪有一个伯父叫做曹鼎,当过尚书令,也当过河间国的国相,因贪污被冀州刺史蔡衍纠弹,被司法当局判处劳役。(后汉书·蔡衍侍)说这个曹鼎是中常侍曹腾的弟弟。·曹腾只有三个哥哥,没有弟弟。<后汉书)的作者范晔弄错了。曹腾的字,是季兴;他的三个哥哥是伯兴、仲兴、叔兴。这曹鼎只能是曹腾的哥哥或侄儿。他不可能是哥哥;倘若是,那末,曹洪便要比曹操长了一辈。曹家的谱系不容易排,以后还有机会作一比较详细的交代。现在,让我们多谈谈曹洪。曹洪靠了伯父曹鼎与叔祖曹腾的提拔,在年轻时候就当了蕲夏县的县长。曹洪不曾像曹仁那样干过那亦兵亦匪的事。有机会做官,也就不必走歪路了。然而他的号召力,却不亚于曹仁。曹操参加讨伐董卓的大举,曹洪带了若干人来当兵,而且在曹操被徐荣打败,跌在马下,丢掉了马的时候,把自己的马让给曹操,情愿步行.冒生命的危险(步行就很容易被敌人迫到)。他向曹操说:“大下可以没有我曹洪,不可以没有你。”于是,曹操骑上了曹洪的马,曹洪在马的后面步行,到了汴河的河岸,找到了船,渡过了汴河,奔到家乡(安徽毫州的)沛国谯县。曹洪在家乡重新招兵,又招到了一千多人,带往(安徽寿县的)扬州刺史所在地的寿春,拜访他的好朋友、扬州刺史陈温。陈温准他在(安庆六安一带的)庐扛郡与(芜湖、南京、镇江、徽州一带的)丹阳郡大招特招,一共招到了好几千人。这几干人,加上在家乡所招到的—千多人,曹洪都带到了(安徽怀远西北的)龙亢县,交给曹操,作曹操的基本武力。曹洪自然也留在曹操左右,当既亲且信的助手。其后,打陶谦,在吕布偷占兖州之时打吕布,并且夺回吕布所占的济阴、山阳、中牟、阳武、京县、密县;又在曹操奠都于许以后的某一年,进攻刘表,打败刘表的某一位“别将”,在舞阳、舞阴、叶县、堵阳、博望等等地点。这一次曹洪打败刘表某一军官的事,不载于《三国志》的其他部分,亦不见于<三国志>及《后汉书》的《刘表传》。所谓“别将”,也不可能是刘备。事件发生在何年何月,陈寿依照他的习惯,含糊其辞,叫我们只能去猜。大概是建安二年三年左右罢,不可能是在建安五年,曹操对袁绍决战于官渡之时。刘表派兵进攻到叶县,在现存的史书上,只有刘备与夏侯惇对垒的一次。当时在夏侯悼的麾下有于禁、李典。是否也有曹洪参加?<三国志·魏书·李典传)不曾提起。李典是巨野县人(巨野在今天属山东省,在汉朝属兖州山阳郡)。他的“从父”(伯父或叔父)李乾,在灵帝末年聚集了几千家老百姓在巨野的邻县乘氏县,筑寨自保;其后点齐了若干壮丁,跟随曹操打黄巾,在(东平西南的)寿张打厂一个胜仗。曹操打袁术,打陶谦,这位李乾也追随了。吕布偷袭充州,叫人劝李乾背叛曹操,李乾不肯,被害。李乾的儿子李整,为父报仇,帮助曹操击溃吕布,被曹操任命为遥领的青州刺史,可惜活了不多久便死去。李整死后,曹操把欠给李乾的一份情意,转还给李典,叫李典以中郎将兼颍阴县县令的名义,接管李整的兵;很快就又把李典升为所谓“离狐郡”的太守。离狐本是济阴郡的一个县,在今日山东单县之西。曹操因人设政,临时把离狐县升格为郡,为的是奖励李典。后来,李典不断地立功,不断地升官,当不当这离孤郡太守已无所谓,曹操就又恢复了离狐的县的地位,废掉了这个所谓离狐郡.在曹、袁对垒于官渡的期间,李典的贡献是率领了李家与亲戚各家,以及麾下的兵,向曹操的大营输送军粮及其他物资。当时曹操左右的军官,最重要的是夏侯惇和夏侯惇的堂兄夏侯渊。’夏侯惇是沛国谯县人,曹操的小同乡,他从初平元年开始,在曹操作“奋武将军”的时候,就已经当了曹操的“司马”。其后,由司马而升为“折冲校尉”、东郡太守、陈留太守、济阴太守、河南尹。他的军阶也早就由校尉升为将军,先后做了“建武将军”、“伏波将军”与“前将军”。而且,封为“高安乡侯”,属于“乡侯”的一级,比县侯小,比亭侯大。夏侯惇可说是武人之中曹操最得力的一员。曹操打陶谦,叫夏侯惇在濮阳留守。曹操打袁绍,叫夏侯惇作大军的“后拒”(后拒用现在的军事术语来说,是“总预备队”的指挥官)。很久以后,曹操在建安二十一年打孙权,带了夏侯惇去;在撤退的时候,留下夏侯停在居巢(安徽巢县)“都督二十六军”,对孙权监视(所谓二十六军,在当时是二十六个大小不同的单位,与现在的“军”不同)。曹操对夏侯惇特别亲近,常常和他乘坐一辆马车,也让他自由进出于自己的卧房。任何别的军官,都不曾受到如此的信任。什么缘故?是不是仅仅因为夏侯悼在打吕布的时候,被流矢射中了一只眼睛?当然不是。最重要的理由,是他从小就和曹操在一起,为人忠勇可靠,文才武艺又高。有人说曹操与夏侯惇本来就是一家人——堂兄弟,曹操的父亲曹嵩,原姓夏侯,是夏侯惇的叔父。最先把这个传说写下来的,是三国时代吴国的一位无名氏著者;这个人留下了一部<曹瞒传>,是裴松之见到过,而引用了不少在<三国志>注文里的。另一本书,晋朝郭颁所写的<世语>,也如此说,对不对呢?不对。固为,曹操把女儿嫁给了夏侯惇的儿子夏侯懋。倘若曹嵩、曹操这一支姓曹的.与夏侯氏本为一家,这就违反了同姓不婚(与其后同氏也不婚)的传统了。曹操的父亲曹嵩,原来不姓夏侯,姓什么?我的假设是:姓曹。曹嵩的父亲曹腾,有兄弟四人,曹腾最小,字叫做季兴。他的三个哥哥的名字,无考,据说他们的字,是伯兴、仲兴、叔兴,挺整齐。这四个兄弟的父亲,司马彪在(续汉书)里面写作“曹萌”,裴松之在注文里加以引用,抄错了字,写成“曹节”(也可能不是裴松之抄错,而是刻书的人与印刷术发明以前,抄写的人弄错了的)。曹萌的子孙如此之多,曹腾的兄弟与侄儿如此之多,曹腾要选一个人当养子或嗣子,又何必在姓曹的以外,去选别人家的子弟呢?话归本题,夏侯惇对曹操是真够卖力的。夏侯悼的堂弟夏侯渊,对曹操也极其忠心。曹操在年轻的时候,“曾有县官事”(犯了法,应该吃官司,坐牢),是夏侯渊情愿吃亏,挺身而出,把罪名都承认在自己身上,被判刑坐牢。曹操也很够意思,虽则是逍遥法外,却并没有把这位替他坐牢的夏侯渊忘记得一干二净。他到处去找有力量的亲友,可能也花了不少的钱,把夏侯渊救了出来。夏侯渊在官渡之战的时候,职务是督战官,官位是“督军校尉”。这官渡之战,是曹操一生最得意的一战。他以很少的兵对抗袁绍很多的兵,对抗了一百多天,终于获胜。胜得确也不易。 袁绍曾经有一次全军移垒,逼近在官渡的曹营,曹军也出垒交锋,曹军战败,退回。此后,袁军尽管挑战,曹军只是给他一个不理。袁军堆砌了一排土山,又建筑了很多没有屋顶的木制高楼(高橹),从土山与高橹之上对曹营俯射。曹军的兵士只能每人拿了盾牌当伞,才能在营中走动。曹操想出了用一种特制的车子,加上杠杆,把石块抛掷到对方,打毁高橹。袁军又掘了若干地道,以垂直线指向曹营。曹操叫兵士掘了若干横的深壕(长堑),在壕中等候从地道钻来的袁军,射死他们,砍死他们。曹操而且派遣将士,不断地邀击袁军从后方来的运粮车辆,烧毁袁军的粮食。袁绍的错误,第一在于有力量围住曹军,而不敢冒险令两翼渡过济水,完成合围。第二,交给刘备的兵不多,未能达成袭占许县的任务。第三,不曾办到叫青州袁谭与并州高干同时出动,分攻曹操的兖州、徐州与洛阳一带。最后,袁绍感觉到运粮车辆不可再被曹军邀击,就命令淳于琼,带一万人从邺县向北走,迎粮。不巧,这时候袁绍身边的一个文官许攸,因为家里有人犯法下狱,他去向主管人说情,说不通,一怒而弃袁投曹,到了曹营,就把袁绍派淳于琼领一万兵北上迎粮的事,报告了曹操。淳于琼与一万多兵,才走了一天,走到了酸枣东南的乌巢镇,离开袁营有四十里左右,宿营(留下来过夜)。曹操却已亲自出马,带了步兵与骑兵五千名左右,追到了乌巢,在半夜里一场恶战,这时候任讨寇校尉的乐进,手起刀落,砍倒了淳于琼。淳于部一万人,被杀了一千以上,其余的非逃即降。曹操叫兵士把敌人尸首上的鼻子与牛马的嘴唇、舌头,统统割下来,交给投降的袁军,带回袁营,以瓦解袁军的士气。曹操可能也烧了袁军在乌巢镇的粮食与乌巢镇的老百姓房屋,让袁营的兵看得见火光。曹操亲自出马,去追击淳于琼,袁绍很快也接到了情报。他将计就计,一面派兵去支援淳于琼,一面叫张郃、高览两员大将去偷袭曹营。袁绍这一着棋,又犯了错误。张郃向他表示,曹操深明兵法,他的营一定扎得很稳,不容易偷袭。他本人虽则率兵离营,去追击淳于琼,不会不留下重兵与猛将,守住大营。袁绍说:“我也派重兵交给你,去打曹军守营的重兵,怎么样?”张郃只得勉强服从。张郃与高览率领了袁绍所交给他们的所谓重兵,冲向曹营,用力去攻,却攻它不下。消息传来,淳于琼全军覆没,曹操本人与五千名步兵、骑兵,已在回营的中途,即将来到。张郃与高览二人心慌,对曹操既害怕,又佩服;对袁绍既怨恨.又看不起,于是互相商量了一下以后,便双双放下武器,走向曹营投降。曹操欣然接受。
张郃与高览投降的消息,紧跟着淳于琼全军覆没的消息,传到袁营。袁绍本人与全军将士都惊破了胆。大家乱奔乱跑,不再像一个军队,曹操乘势来攻,一攻便把袁军杀得大败,崩溃。袁绍本人,与儿子袁谭及八百人卫队之类跑得比谁都快,一口气跑到了:当时的黄河边,在黎阳县附近渡过黄河,才敢停下来休息(汉朝的黎阳县城,在今日河南浚县东北)。曹操收降了留在官渡之北的袁军,有八万人之多。其中,有少数可能是心中仍然不服,在行迹上被曹操怀疑是诈降。这残忍成性的曹操,竟然下令把这八万多人都活埋了。袁绍回到黎阳,接管了驻在该地的将军蒋义渠的兵,这才重新有了一点力量,稳住了冀州及其他三州。他仍旧是拥有四州的大军阀。曹操也暂时“放他一马”,不来进攻。事实上;曹操于大战之后,也急需休养生息,把军队加以整补。袁绍受了官渡之败这生平未有的大打击,在精神上抵不住,—病缠绵了二十个月,在建安七年五月,呕血而死。他留下了四个州的地盘,若干万的军队;三个儿于,一个外甥,一位大太太,五位姨太太。大太太刘氏,醋劲甚大,串通小儿子袁尚,把五位姨太太一起杀死、殉葬,却又怕这五个美丽的竞争者死后得宠,在杀了她们以后又把她们毁容。袁绍死后,部下分为两派。逢纪与审配的一派,拥护小儿子袁尚;辛评与郭图的一派,拥护大儿子、青州刺史袁谭。逢纪与审配拥戴了袁尚作“大将军、冀州牧、兼督冀青幽并四州军事”,成为袁绍的继承人。袁谭不甘示弱,自称为“车骑将军”。当时,两人虽则不和,反对曹操尚属一致。两人商定了,袁谭到黎阳来对抗曹操;袁尚留守邺县。曹操在黎阳打袁谭.打了七个月,从建安八年二月打到九月,才打胜,把袁谭与最近才来到黎阳来帮忙的袁尚,一起追击到邺县,然后撤兵,回许县,开到西平县,准备打刘表。这是曹操的一种姿态。有人向曹操建议过:袁谭、袁尚在有了敌人在面前的时候,便团结对外;没有敌人在面前,便分裂、内讧。果然,曹操刚撤军南下,袁谭与袁尚就互相打了起来,袁谭打败,袁尚追他,一直追到青州的首县平原。曹操带兵重新北上,到平原来救袁谭。袁尚吓坏了,不再在平原恋战,带兵回去守邺县。袁尚的两员大将:吕旷、吕翔,降了曹操。曹操与袁谭见面,替儿子曹整聘定袁谭的一个女儿为妻。然后,曹操又撤军南下,鼓励他们兄弟二人再内讧一次。果然,袁尚以为机会难得,就又从邺县出动,到平原来打大哥袁谭。曹操于是就在建安九年的春天,挥军北上,来攻邺县。替袁尚守邺县的是审配。审配有一个部下,姓冯名礼。这冯礼暗中投降了曹操,甘心作曹操的内应。他开丁城门之外的“护城门”,迎进来曹操的兵三百多人(护城门,当时叫做“突门”。审配在城墙上看见,赶紧叫人搬来许多块石头,从城墙上向护城门的地点摔下,果然就把它堵住。进来了的三百多名曹军兵士,个个命苦,一起被杀。曹操这一次来,是准备把袁尚彻底解决的。他在五月间叫人在邺城的周围掘一道四十里长的壕(堑)。审配站在城墙上,对曹军掘壕的兵,密切注视;他见到掘成的壕,既窄且浅,任何男人都可以眺得过去,忍不住笑出声来,他心想,曹操徒有虚名,并无军事上的真才实学。因此,他也就不再关心这无济于事的长壕了。过了几天,曹军奉了曹操的命令,于一夜之间把这四十里长的壕,加宽加深,宽加到两丈,深也加到两丈,而且引进来漳河的水。从此,邺县的县城就变成了孤岛,和外面完全隔绝。隔绝了足足三个多月,从五月到八月,城里的人民饿死了一大半。袁尚在七月间曾经中止进攻哥哥的平原,带了一万多人回来援救邺县。他走到距离邺县不远,漳水的弯曲之处,便被曹操围住。部下的将官马延等人纷纷向曹操投降,全军一万多兵不战自溃。袁尚逃往中山国(定县)。袁尚的援军在七月崩溃了以后,邺县城就极难再守。审配却并不灰心,派人带了强力的弩,走出城外,埋伏在曹操常常出巡的路途之旁,有一次几乎把曹操射中。审配有一个不成材的侄儿审荣,官居“东门校尉”。这审荣在半夜开了城的东门,放了曹操的兵进来。审配率领他的残部,巷战了一些时,被俘,曹操希望他投降,他不肯。曹操叫人把他杀了,算是成全他的名节。邺城破了以后,袁绍的外甥高干望风而降,曹操叫他继续做并州刺史。袁谭这个不知死活的人,竟然乘火打劫,侵占了冀州的若干州县,把袁尚从中山国打走。袁尚逃往幽州,依附袁熙。
曹操写信责备袁谭,也宣布丁自己儿子曹整与袁谭的女儿“绝婚”。曹操先把袁谭的女儿送走,然后才向袁谭的所在地平原进军。袁谭放弃了平原,退守南皮县。次年,建安十年,正月,曹操的大兵开到南皮,两军正待交锋,袁谭忽然披下头发,冒充疯子,骑马逃走。他被自己的人迫到,摔下马来,被这人砍下了头,提到曹营领赏。袁尚到达了幽州不久,他和二哥袁熙被叛变的部下将官焦触、张南二人攻击,守不住幽州,逃往辽西,依附辽西乌桓的单于蹋顿。蹋顿伙同辽东乌桓单于苏仆延,右北平乌桓单于乌延,率部众进入长城,大肆骚扰,围困了校尉鲜于辅在(河北密云东北的)犷平。建安十年十月,曹操亲自北上,解了犷平之围,把“三郡”(辽西、辽东、右北平)的乌桓赶回长城以外。糊涂的高干,以为曹操去打乌桓便奈何不了他,就在这时候反了曹操。曹操在建安十一年正月回军打他,他留下一个将官守住壶关,自己逃往南匈奴那里去求救。南匈奴的单于不理他,他再向荆州的方向逃,走不到半途,在(陕西商县的)上洛,被都尉王琰捉住,砍头。消灭了高干以后,曹操的次一重要课题,便是如何征服长城以外的乌桓,以解决袁熙、袁尚。