曹操回军后,对程昱大加赞赏,执其手说:“微子之力,吾无所归矣”(《三国志·魏书·程昱传》)。并表程昱为东平相,驻范。
同年八月,曹操与吕布战于濮阳,作战不利。时蝗灾起,二人各自而归。十月,曹操至东阿,袁绍派人欲与曹操联合,将曹操迁居至邺,想伺机吞并曹操。曹操新失兖州,而且军粮将尽,有意答应。这时程昱赶到,便问:“窃闻将军欲遣家,与袁绍连和,诚有之乎?”曹操曰是,程昱说:“意者将军殆临事而惧,不然何虑之不深也?夫袁绍据燕、赵之地,有并天下之心,而智不能济也。将军自度能为之下乎?将军以龙虎之威,可为韩、彭之事邪?今兖州虽残,尚有三城。能战之士,不下万人。以将军之神武,与文若、昱等,收而用之,霸王之业可成也。愿将军更虑之”(《三国志·魏书·程昱传》)!曹操于是放弃此念。
建安元年(196年),随曹操击败黄巾军。七月,汉献帝刘协在杨奉、董承等护卫下,从长安(今陕西西安西北)返回洛阳(今河南洛阳东北)。在要不要奉迎天子建都许昌的问题上,曹军内部发生了争执。多数人不同意迎接献帝,理由是“山东未平,韩逼、杨奉新将天子到洛阳,北连张杨,未可卒制”(《三国志·魏书·荀彧传》)。唯荀彧、程昱坚持同意。荀彧还以古事为例劝说曹操,曹操终于奉迎献帝迁都许昌(今河南许昌东)。曹操被封为大将军、武平侯,程昱也封为尚书。从此造成曹操奉天子以令诸侯的战略优势,并为其此后统一战争(参见曹操统一北方的战争)的顺利实施,奠定了基础。
因兖州尚未安抚,曹操又以程昱为东中郎将,领济阴太守,都兖州事。
同年,刘备为吕布所败,失徐州,来归曹操。程昱对曹操说:“观刘备有雄才而甚得觽心,终不为人下,不如早图之。”曹操说:“方今收英雄时也,杀一人而失天下之心,不可”(《三国志·魏书·武帝纪》)。未听其言,并给刘备增兵增粮,派其至小沛,收集散兵以对付吕布。
曹操奉迎汉献帝迁都许昌(今河南许昌东)后,独掌军政大权,总揽朝政,皇帝成为傀儡。建安四年(199年),车骑将军董承接受皇帝衣带诏,与刘备及长水校尉种辑、将军吴子兰、王服等,密谋除掉曹操。刘备恐曹操猜忌,欲伺机脱离曹操控制,趁右将军袁术溃败,主动请求跟大将朱灵前去截击。程昱与郭嘉说:“公前日不图备,昱等诚不及也。今借之以兵,必有异心”(《三国志·魏书·程昱传》)。曹操后悔,立即派人去追,已然不及。后袁术南逃寿春(今安徽寿县),病死,朱灵班师回朝。十二月,刘备乘曹操部署对袁绍作战之时,袭斩徐州(治下邳,今江苏睢宁西北)刺史车胄,又击败曹操派去讨伐的司马长史刘岱军,据有徐州、下邳(今江苏睢宁西北)等地,背叛曹操,响应袁绍。
不久,程昱升为振威将军。
建安五年(200年),袁绍在黎阳,将率军南渡与曹操决战。时程昱只有700士兵守鄄城,曹操闻后,派人告诉程昱,想给他增兵2000。程昱不肯,说:“袁绍拥十万众,自以所向无前。今见昱兵少,必轻易,不来攻。若益昱兵,过则不可不攻,攻之必克,徒两损其势。愿公无疑”(《三国志·魏书·程昱传》)!曹操从之。后袁绍闻鄄城兵少,果然未去攻打。曹操对程昱胆略、智慧大为赞赏,对贾诩说:“程昱之胆,过于贲、育”(《三国志·魏书·程昱传》)。
袁绍死后,程昱又收集亡命之徒数千与曹操会于黎阳,破袁谭、袁尚,被封为奋武将军,封安国亭侯。