孙瓒和亲,袁绍令妻子居于刘岱处,公孙瓒亦遣从事范方带兵助刘岱守地后来袁绍与公孙瓒不和,公孙瓒击破绍军,于是遣使向刘岱说要收取袁绍的妻子,令刘岱遣上其妻,并与袁绍绝交刘岱连日不能决,于是召见程昱问计,程昱说:“如果放弃袁绍这个近援而求于公孙瓒为远助,这等于求人于越地以拯救受溺的儿童一样而且,公孙瓒亦非袁绍之敌,如今虽稍胜袁绍军队,但最终必为袁绍所擒如果不思虑长远,将军您必败无疑”刘岱听从其计果然公孙瓒为袁绍所破刘岱表奏程昱为骑都尉,程昱却以身疾请辞
后来刘岱为黄巾所杀曹操兵临兖州,辟召程昱为寿张令曹操征徐州时,令程昱与荀彧留守鄄城那时张邈等军作叛,迎吕布入兖,四周郡县响应,唯有鄄城、范县、东阿不动最终于守住三城曹操归还,执程昱之手道:“若非程卿之力,吾无所归矣”于是表昱为东平相,屯于范县
兴平元年(194),曹操与吕布在濮阳交战,数度失利又有蝗祸,于是双方引兵暂去袁绍于是使人游说曹操连和,希望曹操能迁居于邺城当时曹操眼见兖州新失,军粮又将尽,计议之下正想答应袁绍要求程昱见事,经反复向曹操进言,曹操才放弃连和袁绍的想法
汉献帝定都许昌后,以程昱为尚书其时兖州尚未绥抚停当,于是又以程昱为东中郎将,领济阴太守,都督兖州事建安三年(198),刘备失去徐州,前来归附曹操,程昱劝曹操杀刘备,曹操不听建安四年(199),曹操派遣刘备至徐州截击袁术,程昱与郭嘉向曹操道:“公前日不除掉刘备,如今借之以兵,他必定会有异心”曹操后悔,但已追之不及
建安五年(200),当时袁绍在黎阳将移兵南渡,而程昱却只有七百兵守鄄城,曹操知道危急,命人告诉程昱,欲增二千兵助守,程昱不肯接受袁绍闻程昱兵少曹操闻其事,向贾诩道:“程昱之胆略,过于孟贲、夏育啊”官渡之战后,袁绍主力尚存,纠集大军又与曹操对峙,程昱献十面埋伏之计,破袁绍,使之吐血一病不起
建安八年(205),程昱纠合一伙山间民众及亡命之徒,得精兵数千人,于是引军与曹操会师黎阳,讨伐袁谭、袁尚,二袁败走后,程昱拜为奋武将军,封安国亭侯建安十三年(208),曹操南征荆州,刘备向吴求助有人认为孙权必杀刘备,程昱却认为不会,后来事实证明孙权果然补给军兵与刘备,以抵御曹操赤壁之战中,程昱第一个提醒曹操要防止火攻,后又根据黄盖的船速判断有诈,提醒曹操派人拦阻华容道上,也是程昱献计让曹操动之以情,果然说动关羽,得以逃脱大难
程昱生性刚戾,与人多有不和有人诬告程