程咬金的经历倒是与演义有些相像,但他可没当过什么“混世魔王”。他先投靠李密,李密手下有八千勇士,分为四队,程咬金领一队。先是打败了王世充,待李密失败后又投靠了王世充。但他看出王世充并非人主,于是与秦琼一起投奔大唐。此后为大唐南征北讨,东挡西杀,以功封宿国公(演义中是鲁国公)。后被李渊猜忌,在著名的玄武门之变中,程咬金也参与其中。李世民登基后,不断升迁。麟德二年(公元665年)去世,赠骠骑大将军、益州大都督,陪葬昭陵。是凌烟阁二十四功臣之一。
649年李世民病死,程咬金奉太宗遗命命率领禁卫军护卫太子李治回京即位,并在左延明门外连续宿卫三个月之久。李世民死的消息传到西域,被唐朝封为瑶池都督府都督的阿史那贺鲁(西突厥人)开始反唐,夺取西州、庭州等西域地区,统一西突厥部众,与唐朝对抗。
经过几年的准备,655年唐高宗李治派遣程咬金为葱山道行军大总管,统帅军队讨伐阿史那贺鲁。9月唐军在鹰娑川击溃阿史那贺鲁两万人,“追奔二十里”。当先锋总管苏定方建议乘胜追击时,副帅王文度以有密旨为由拒绝,而年迈的程咬金也丧失了当年的锐气,默许了王文度的指挥。大军不仅丧失歼敌良机,反而“马多瘦死,士卒疲劳,无有战志”。当大军抵达怛笃城时,数千家胡人开城投降,程咬金不顾苏定方的阻拦,听从王文度建议,“取其资财,屠城而去”。
大军回京后,程咬金被免官,但不久再次被任命为岐州刺史。此后程咬金上表请求致仕,唐高宗李治批准。此后戎马一生的程咬金渡过了一段难得的闲暇时光,直到665年2月7日程咬金于长安怀德里的宅邸中病死,时年77岁,此时唐朝的皇帝还是李治。此后朝廷追封他为骠骑大将军、益州大都督,并陪葬于李世民的昭陵旁边。
在小说、影视剧中程咬金娶了裴元庆的姐姐裴氏,但在真实的历史中程咬金一生中先后有两位正妻,前妻孙氏628年病死,时年31岁;继妻崔氏,出身百年名门清河崔氏,于659年病死,时年67岁。
文学作品中程咬金有两个儿子,程铁牛、程万牛。但在历史中程咬金共有嫡子3人,庶子3人(文献中有名字的)。长子名叫程处默,后来承袭了父亲卢国公的爵位。次子程处亮(有的文献也叫程怀亮)于633年迎娶了时年10岁唐太宗的第11个女儿清河公主李敬(早婚在古代很正常),两人年纪应该相当。程处亮成为驸马都尉,被封为东阿县公,先后担任左卫中郎将、宁远将军等职。此外程咬金还有一个少子,名叫程处弼,庶子有程处寸、程处立、程俊等人,留下的资料很少。
可见,正史中的程咬金没那么“二”,是一个规规矩矩的武将,记载也不多,总体上武艺高强,有勇有谋。也许小说家需要这么一个人物,正好在《旧唐书》里他与秦琼、尉迟恭同传,因此就选他了,把普通的武将程知节塑造成个性鲜明的程咬金了。