贞观末年,唐太宗亲征辽东,薛仁贵成为张士贵的部下。小说中描写张士贵屡次假冒薛仁贵的战功,实属子虚乌有,冤枉古人。
贞观十九年(645年),唐太宗李世民御驾亲征,直指高丽。唐军到了安地,一位郎将被高丽军队团团围住,情势危急,薛仁贵飞马上前,立斩敌将,将人头悬挂于马鞍上,一举震慑敌军。唐太宗提升薛仁贵为右领军郎将,让他守卫玄武门。
唐高宗继位后的永徽五年,皇帝笃临万年宫。一天夜里,暴雨成灾,引发山洪,大水冲到玄武门,卫士们大惊失色,四处逃散。薛仁贵十分生气,“天子有难,你们却如此贪生怕死”,他登高向宫中大声呼喊,终于惊醒了唐高宗。唐高宗刚刚出宫登上高处,洪水就把寝殿变成一片汪洋,如果皇帝稍有片刻迟疑,此时已然葬身水中。皇帝一生没有忘记他的救驾之恩,即使薛仁贵后来战败当死,也仅仅将之废为庶人,晚年还对宠臣说道,“往日九成宫遭遇洪水,没有薛仁贵我就没命了。”
龙朔元年(661年),铁勒酋长比粟毒伙同其他部落起兵犯境,唐高宗任命郑仁泰为铁勒道行军大总管,薛仁贵为铁勒道行军副大总管,出兵讨伐思结、拔也固、仆骨、同罗四部。
当时铁勒九姓拥兵十几万,凭借天山之地利,企图与大唐雄师一决胜负。他们派出数十位骁勇骑士出马挑战,眨眼间,就被薛仁贵三箭射死三人,胆寒之下,铁勒人下马投降,放弃了抵抗。为了消除后患,薛仁贵命令部下。将13万已经投降的铁勒人就地坑杀,制遣了中国历史上骇人听闻的杀降暴行,薛仁贵成了大唐敌人眼中的凶神恶煞,唐军中到处传唱道,“将军三箭定天山,壮士长歌入汉关”。
朝臣对薛仁贵的弹劾中有这样的语句,“娶妾虽作逗留,准法便须离正”,抢掠而来的女子做了薛仁贵的小妾,以当时的情形猜度,她很可能是位铁勒贵族,不同于戏曲中的代战公主,代战公主是硬逼薛仁贵做了自己的丈夫。
成亨元年(670年),薛仁责成为逻娑道行军大总管,以阿史那道真、郭待封为副,领兵10余万,迎战吐蕃军队。唐军大败,几至全军覆没,薛仁贵也被吐蕃抓获,在没有选择的情况下,只有与吐蕃主将噶钦陵议和。议和之后,薛仁贵自带枷锁,回长安向皇帝请罪。依照唐律,以他的丧师重罪,本应处死,皇帝念及他以往的功劳和忠心,只将他除名为庶人。
薛仁贵变成平民百姓,决不像小说中的胡编乱造,说什么李道宗设计陷害忠良,以致忠良蒙难。
根据官场运行的潜规则,有人是圈圈里面的人,有人是圈圈外面的人,而薛仁贵则是皇帝圈圈里面的人,一时贬放,终会东山再起。
开耀元年(681年),薛仁贵封为瓜州长史,不久又被授予右领军卫将军、检校代州都督,前往云州(今山西大同),出击突厥的阿史那元珍。薛仁贵率军追击,大破敌军,斩首万余级,俘获二万人,还有驼马牛羊三万余头。
永淳二年(683年),薛仁贵去世,赠左骁卫大将军、幽州都督,官府特造灵舆,护送还乡。极尽哀荣。