乾封元年(666年),高句麗權臣淵蓋蘇文病死,其子泉男生繼掌國事。泉男生的兄弟泉男建、泉男產趁機發難,驅逐泉男生。泉男生投奔唐朝,懇求唐朝發兵相助。
六月,李治先遣右驍衛大將軍契苾何力為遼東道安撫大使,右金吾衛將軍龐同善、營州都督高侃為行軍總管,以泉男生之子泉獻誠為鄉導,一同進討高句麗。同年十二月,李治任命李勣為遼東道行軍大總管兼安撫大使,出任遼東前線最高指揮官。薛仁貴也參與了此次征高句麗之役。
乾封二年(667年)九月,李勣首先攻拔為“高麗西邊要害”的新城,並趁勢揮軍進擊,連陷十六座城。泉男建派兵襲擊尚在新城的龐同善、高侃,薛仁貴聞訊後,率軍及時救援,擊敗高句麗軍,斬首數百級。高侃進軍至金山,交戰不利,高句麗趁勝進攻,薛仁貴引兵迎擊,將高句麗軍截為兩段,大破高句麗軍,斬首五萬餘級,並乘勝攻陷南蘇、木底、蒼岩三城,與泉男生會師。
對此,李治親自給薛仁貴寫信說:“金山的戰事,賊兵非常多,你衝在士兵前麵,奮力殺敵,不顧自己的性命,左衝右擊,所向無前,各部軍隊非常的有勇氣,才使得這次戰役很快就取得了勝利。應該好好地建功立業,成全這美名啊!”
總章元年(668年)二月,薛仁貴攜勝率三千人(《舊唐書·薛仁貴傳》作兩千人)進攻高句麗重鎮扶餘城。這時,部將都以兵少,勸他不要輕進。薛仁貴說:“兵員在於會用,不在人多。”於是率軍出征。
這次戰役,他身先士卒,共殺死、俘虜高句麗軍一萬餘人,攻拔扶餘城。唐軍一時聲威大振,扶餘川四十餘城,紛紛望風降服。
之後薛仁貴一路凱歌,與李勣大軍會師於高句麗都城平壤城外,對平壤形成合圍之勢。九月,僧人信誠開門接納唐軍,李勣趁勢進攻,一舉攻陷平壤,擒獲泉男建。至此,高句麗滅亡。
此戰,唐朝共獲五部、一百七十六座城、六十九萬七千戶口,將其劃分九個都督府、四十二州、一百縣,設安東都護府統管整個高句麗舊地。
薛仁貴以功授右威衛大將軍兼檢校安東都護,封平陽郡公,率兵二萬人留守平壤(《舊唐書·薛仁貴傳》作與劉仁軌共同留守。但按《舊唐書·劉仁軌傳》,劉仁軌在唐軍回師後便請求致仕,並無留守安東都護府的記載。
薛仁貴移至新城,撫養孤兒,贍養老人,治理盜賊,提拔任用高句麗的人才,表彰獎勵品德高尚、行為優異的百姓。一時間,高句麗人都非常喜悅,甚至忘卻亡國之痛。
鹹亨元年(670年),唐朝為了打擊吐蕃和光複吐穀渾,出動五萬大軍護送吐穀渾王還青海,以薛仁貴為邏娑道行軍大總管,阿史那道真、郭待封為副總管。
郭待封是名將郭孝恪之子,曾為鄯城鎮守,他不甘心屈居薛仁貴之下,經常違抗薛仁貴的節製。