永汉元年(189),举孝廉,任守宫令,掌管皇帝的笔、墨、纸张等东西。九月,董卓废少帝刘辩,立献帝刘协。十一月,董卓自为相国,赞拜不名,入朝不趋,剑履上殿。荀彧弃官归家。对父老说:“颍川,四战之地也,天下有变,常为兵冲,宜亟去之,无久留”(《三国志·魏书·荀彧传》)。但乡人多怀恋故土,不愿离去。时冀州牧同郡韩馥派人接荀彧,却无人相随。荀彧只得独自将宗族迁至冀州避难。到冀州后,冀州已为袁绍所得,袁绍见荀彧来,待之为上宾。荀彧弟荀谌和同郡辛评、郭图都在袁绍手下。荀彧却见袁绍“终不能成大事”(《三国志·魏书·荀彧传》)。初平二年(191),荀彧离袁绍而投曹操。曹操见荀彧来投,大悦,说:“吾之子房也”(《三国志· 魏书·荀彧传》)。任荀彧为司马,荀彧时年二十九岁。
当时董卓威陵天下,曹操问计于荀彧,荀彧说:“卓暴虐已甚,必以乱终,无能为也”(《三国志·魏书·荀彧传》)。后董卓派李傕等出关东,虏略各地,至颍川、陈留而归。荀彧乡人多数死于战乱。
初平三年(192),曹操领兖州牧,后为镇东将军。荀彧则以司马身份随其征战。
兴平元年(194),曹操东征陶谦,张邈、陈宫乘机在兖州反曹,暗中迎接吕布。时荀彧和寿张令程昱守鄄城(今山东鄄城北,兖州治所),吕布到后,派刘翊告诉荀彧:“吕将军来助曹使君击陶谦,宜亟供其军食”(《三国志·魏书·荀彧传》)。众人疑惑,唯荀彧知其计,立即命令军队加强防,并急召东郡太守夏侯敦。而兖州诸城皆为吕布所占。当时曹操率大军出征,留守的兵力很少,而且很多人都与张邈、陈宫勾结。夏侯敦到后,乘夜诛杀谋反者数十人,军心乃安。
豫州刺史郭贡受吕布煽动,率众数万来攻,军中甚惧。郭贡要求见荀彧,荀彧准备前往,夏侯敦等人说:“君,一州镇也,往必危,不可。”荀彧说:“贡与邈等,分非素结也,今来速,计必未定;及其未定说之,纵不为用,可使中立,若先疑之,彼将怒而成计”(《三国志·魏书·荀彧传》)。荀彧出城劝说,郭贡见荀彧毫无惧意,便说鄄城易守难攻,引兵而去。荀彧又与程昱定计,保全了范、东阿、卒全三城。不久,曹操挥师濮阳击败了吕布。
兴平二年(195年)正月,曹操击败侵入定陶(今山东定陶西北)的吕布军。五月,曹操向驻军巨野(今山东巨野东北)的吕布部将蒋兰、李封发动攻击,吕布亲自援救,被曹操击败,撤退而走。曹操歼灭巨野守军,斩蒋兰、李封,乘胜进驻乘氏(今山东巨野西南)。
此时,徐州牧陶谦已死,曹操获悉后,打算趁机夺取徐州,再回军消灭吕布。荀彧劝阻说:“昔高祖保关中,光武据河内,皆深根固本以制天下,进足以胜敌,退足以坚守,故虽有困败而终济大业。将军本以兖州首事,平山东之难,百姓无不归心悦服。且河、济,天下之要地也,今虽残坏,犹易以自保,是亦将军之关中、河内也,不可以不先定。今以破李封、薛兰,若分兵东击陈宫,宫必不敢西顾,以其闲勒兵收熟麦,约食畜谷,一举而布可破也。破布,然后南结扬州,共讨袁术,以临淮、泗。若舍布而东,多留兵则不足用,少留兵则民皆保城,不得樵采。布乘虚寇暴,民心益危,唯鄄城、范、卫可全,其余非己之有,是无兖州也。若徐州不定,将军当安所归乎?且陶谦虽死,徐州未易亡也。彼惩往年之败,将惧而结亲,相为表里。今东方皆以收麦,必坚壁清野以待将军。将军攻之不拔,略之无获,不出十日,则十万之众未战而自困耳。前讨徐州,威罚实行,其子弟念父兄之耻,必人自为守,无降心,就能破之,尚不可有也。夫事固有弃此取彼者,以大易小可也,以安易危可也,权一时之势,不患本之不固可也。今三者莫利,愿将军熟虑之”(《三国志·魏书·荀彧传》)。曹操采纳荀彧的意见,放弃进攻徐州的企图。抓紧战机,收割熟麦,储存粮秣,积蓄实力。