徐晃早年在郡里作小吏,因为跟随随车骑将军杨奉讨伐贼寇有功,被任为骑都尉。
192年,王允和吕布谋杀董卓,董卓部将李傕、郭汜等人攻破长安城,把王允等人杀了。徐晃说服杨奉护送汉献帝向东来到洛阳,杨奉接受这个建议。汉献帝渡河到安邑时(今山西夏县北),封赏保驾有功人员,徐晃被封为都亭侯。
196年初,汉献帝在河内太守张杨、兴义将军杨奉等朝廷百官的保护之下,回到洛阳城,杨奉被任为车骑将军,在大梁驻兵。徐晃见大将军兼司隶校尉韩暹和卫将军董承之间的斗争斗日益加剧,就劝告杨奉归附曹操,杨奉决定听从徐晃的建议。秋天,曹操保护着汉献帝从旧都洛阳迁都到许县,并定都许昌改名称为许都,改元建安。杨奉在韩暹的挑拨下又改变主意,跟韩暹一起出兵去劫驾,在梁地被曹军杀得大败,徐晃则投奔曹操。曹操分兵给徐晃,派其攻打卷、原武两地,获胜,被任命为裨将军。随曹操攻打吕布,纳降吕布将领赵庶、李邹等人,后来又与史涣在河内斩杀眭固,立下大功。