汉献帝东迁洛阳之时,杨奉企图从梁地出兵拦截,但未能成功。建安元年冬十月,曹操决定征讨杨奉。杨奉得知曹操来攻,心中畏惧,急忙向南投奔袁术。曹操乘胜追击,攻打杨奉在梁地的屯营,并一举攻克。
此时,朝廷任命袁绍为太尉。袁绍认为太尉的职位在曹操担任的大将军之下,感到十分耻辱,拒不接受任命。曹操见状,便坚决辞去大将军一职,将其让给袁绍。于是,汉献帝改封曹操为司空,代理车骑将军。
同年,曹操采纳枣祗、韩浩等人的建议,开始推行屯田制。自天下大乱以来,粮食匮乏成为困扰各方势力的难题。众多军队兴起,却都没有长远的粮食储备计划,饥饿时就四处掠夺,吃饱后便丢弃剩余粮食,不少军队因缺粮而自行瓦解、流离失所,不战自败的例子数不胜数。袁绍在河北时,他的士兵只能靠吃桑椹维持生计;袁术在江、淮地区,军队则以蒲蠃为食。百姓更是苦不堪言,甚至出现人吃人的悲惨景象,各州郡一片萧条。曹操深知,稳定国家的关键在于强大军事力量和充足的粮食储备,他感慨道:“秦朝凭借重视农业而兼并天下,汉武帝通过屯田平定西域,这些都是前人留下的成功范例。”于是,曹操这一年招募百姓在许县附近屯田,收获谷物达百万斛。此后,各州郡纷纷效仿,设置田官,到处都开始储备粮食。这一举措让曹操在四处征战时,无需为运输粮草而劳心费力,为他兼并各路贼寇、平定天下奠定了坚实基础。
吕布趁刘备不备,袭击并夺取了下邳。刘备走投无路,只好前来投奔曹操。程昱见状,向曹操建议道:“刘备有雄才大略,又深得人心,他终究不会屈居人下,不如趁早除掉他。”曹操却说道:“如今正是招揽英雄的时候,若是杀了刘备,会让天下英雄寒心,此事万万不可。”
张济从关中逃到南阳,不久后去世,他的侄子张绣接管了他的部队。建安二年春正月,曹操率军抵达宛城。张绣见曹操势大,便选择投降。然而没过多久,张绣反悔,再次反叛。曹操仓促应战,结果军队战败,他自己也被流矢射中,长子曹昂、侄子曹安民不幸遇害。据《魏书》记载,曹操所骑的马名叫绝影,也被流矢射中,脸颊、足部受伤,曹操的右臂也因此受伤。《世语》则提到,曹昂不会骑马,将自己的马让给曹操,曹操才得以幸免,而曹昂却惨遭杀害。曹操无奈之下,率军退回舞阴。张绣派骑兵前来袭击,曹操整顿军队,奋力反击,成功击破张绣的骑兵。张绣见势不妙,逃往穰城,与刘表合兵一处。曹操对众将说道:“我接受张绣等人投降,却没及时扣押他们的人质,才导致这样的后果。我已经知道失败的原因了。你们看着吧,从今往后,我不会再犯这样的错误。”说完,曹操便率军返回许县。《世语》记载,按照旧制,三公领兵入朝拜见天子时,都要被戟交叉架在脖子上前行。当初,曹操准备征讨张绣时入朝拜见天子,这一制度刚刚恢复。经此一役,曹操从此不再入朝拜见天子。