史载程昱“长八尺三寸,美须髯”(《三国志·魏书·程昱传》)。黄巾起义时,县丞王度响应黄巾起义,烧粮库,结果县令因害怕越城而逃。百姓也扶老携幼东奔渠丘山。程昱则派人监视王度行踪,使王度得空城却不能守。然后出城西屯,对城中大氏薛房等说:“今度等得城郭不能居,其势可知。此不过欲虏掠财物,非有坚甲利兵攻守之志也。今何不相率还城而守之?且城高厚,多谷米,今若还求令,共坚守,度必不能久,攻可破也”(《三国志·魏书·程昱传》)。薛房等同意,但百姓却不同意,说:“贼在西,但有东耳。”程昱对薛房等说:“愚民不可计事”(《三国志·魏书·程昱传》)。程昱于是暗中派数骑在东山上举起旗帜,让薛房等看见,并大呼“贼已至”,然后下山奔走入城。百姓见后,立即奔走相随。程昱被众人推举为县令,与百姓共同守城。王度等来攻城,不能克,准备撤退。程昱乘机率百姓出城猛攻,大败王度,东阿由此得以保全。
初平三年(192年),兖州刺史刘岱请程昱为辅,但是程昱不肯。当时刘岱与袁绍、公孙瓒和亲,袁绍将家眷安置在刘岱那里,而公孙瓒也派从事范方率骑兵帮助刘岱。后袁绍与公孙瓒的关系出现了裂缝,公孙瓒击败袁绍,并派人去催刘岱把袁绍的家眷交给他,和袁绍决裂。范方还威胁道:“若岱不遣绍家,将骑还。吾定绍,将加兵于岱”(《三国志·魏书·程昱传》)。刘岱为此连日犹豫不决。别驾王彧对刘岱说:“程昱有谋,能断大事”(《三国志·魏书·程昱传》)。刘岱便召见程昱,请程昱为他出计。程昱说:“若弃绍近援而求瓒远助,此假人于越以救溺子之说也。夫公孙瓒,非袁绍之敌也。今虽坏绍军,然终为绍所禽。夫趣一朝之权而不虑远计,将军终败”(《三国志·魏书·程昱传》)。刘岱从其计,拒绝了范方。范方率骑兵而归,结果还没到,公孙瓒就大为袁绍所破。刘岱为此表奏程昱为骑都尉,程昱以有病为由给推辞了。刘岱后来被黄巾军所杀。
曹操到兖州后,便招程昱,程昱答应了。临走时,东阿县的人很不理解,问:“何前后之相背也”(《三国志·魏书·程昱传》)!程昱笑而不答。曹操与其相谈,很高兴,便让程昱为寿张县令。
兴平元年(194年),曹操东征陶谦,派程昱与荀彧留守鄄城(今山东鄄城北,兖州治所)。张邈、陈宫乘机在兖州反曹,暗中迎接吕布。各县均响应,唯鄄城、范、东阿三地不动。当时吕布军投降的人说陈宫欲率军去攻东阿,使氾嶷取范。百百姓闻后,大为恐慌。荀彧认为应当稳定民心,便对程昱曰:“今兖州反,唯有此三城。宫等以重兵临之,非有以深结其心,三城必动。君,民之望也,归而说之,殆可”(《三国志·魏书·程昱传》)!于是程昱回东阿。
路过范时,程昱对县令靳允说:“闻吕布执君母弟妻子,孝子诚不可为心?今天下大乱,英雄并起,必有命世,能息天下之乱者,此智者所详择也。得主者昌,失主者亡。陈宫叛迎吕布而百城皆应,似能有为,然以君观之,布何如人哉?夫布,粗中少亲,刚而无礼,匹夫之雄耳。宫等以势假合,不能相君也。兵虽众,终必无成。曹使君智略不世出,殆天所授?君必固范,我守东阿,则田单之功可立也。孰与违忠从恶而母于俱亡乎?唯君详虑之!”靳允流着泪说:“不敢有二心”(《三国志·魏书·程昱传》)。
时氾嶷已至,靳允与其相见,派伏兵将其杀死。程昱又派骑兵将仓亭渡口的桥梁折了,使陈宫无法渡河。程昱至东阿,东阿县令枣祗已率百姓坚守城池。兖州从事薛悌又与程昱相谋,保全了三城。