公孙瓒击破袁绍军,于是遣使向刘岱说要收取袁绍的妻子,令刘岱遣上,并与袁绍绝交。公孙瓒又向范方下令:“若刘岱不遣上袁绍家便领兵回来。待我定了袁绍。就攻打刘岱。”刘岱连日不能决议。别驾王彧向刘岱说:“程昱有谋略,能断大事。”
刘岱于是召见程昱问计,程昱说:“如果放弃袁绍这个近援而求于公孙瓒为远助,这等于求人于越地以拯救受溺的儿童一样。而且,公孙瓒亦非袁绍之敌,如今虽稍胜袁绍军队,但最终必为袁绍所擒。如果取其一朝一夕之势而不思虑长远的计划,将军您必败无疑。”
刘岱听从其计。于是范方领其兵归去,兵尚未至而公孙瓒已大为袁绍所破。刘岱表奏程昱为骑都尉,程昱却以身疾请辞。
后来刘岱为黄巾所杀。曹操兵临充州。辟召程昱。程昱一口答应。程昱将行之时,他的乡人十分疑惑,说他:“怎么你前后的行为相背如此?!”程昱却只笑而不应。程昱初至之时。曹操便跟他谈论大事。十分高兴,以程昱为寿张令。曹操征徐州时,令程昱与荀彧留守鄄城。那时张邈等军作叛,迎吕布入充,四周郡县响应,唯有鄄城、范县、东阿不动。有吕布军的降兵。指陈宫欲带兵取东阿,又使泛疑取范县,吏民皆十分恐惧。荀彧谓程昱道:“如今充州作反,唯有此三城得以保全。陈宫等以重兵临城,如果不能同心结力。三城必震动。而您是吏民之望,如今回去向他们游说,一定可以成功!”程昱于是返回东阿,当时泛疑已在范县,范县县令斩允经程昱鼓励,伏兵刺杀泛疑。程昱又遣别骑占住仓亭津,陈宫军不能得渡。程昱至东阿时。东阿令枣祗已经率吏民拒城坚守。又有充州从事薛梯与程昱协谋,终于守住三城,以待曹操。曹操归还,执程昱之手道:“若非程卿之力,吾无所归矣。”
于是表程昱为东平相,屯于范县。
后来曹操与吕布在濮阳交战。数度失利。又有蝗祸,于是双方引兵暂去。袁绍于是使人游说曹操连和,希望曹操能迁居于邯城。当时曹操眼见充州新失,军粮又将尽小计议之下正想答应袁绍要求。程昱见事,向曹操言道:“窃闻将军想遣居迁邯。与袁绍连和,有这样的事吗?”曹操说:“是的。”程昱劝谏:“程昱认为将军您只是一时临事而惧,否则又怎会如此不深思熟虑?袁绍据有燕、赵之地,怀并吞天下之心,可是其智不能济其事。将军自以为能在他底下做事吗?将军您有龙虎之威,可以做韩信、彰越他们这样臣服于他人的事吗?如今充州虽残。尚有三城可守。能战之”;万将军兰神武,与文若小