薛善早年擔任過北魏的司空府參軍事、儻城太守、鹽池都將。東魏開始後，薛善擔任泰州別駕。537年，西魏與東魏爆發沙苑之戰，東魏大敗。當時薛善在河東，對北魏孝武帝與高歡不和而被迫投奔宇文泰的事情耿耿於懷，薛善認為高歡有逐君之罪，不願繼續為其效力，於是在河東打開城門引西魏將領李弼入城。西魏成功在河東設置汾州和绛州。事後宇文泰任命薛善為汾陰令，後又升為行台郎中、司農少卿兼同州夏陽二十屯監以及夏陽鐵冶監，負責管理屯田和監督兵器製造。薛善因功勞受封為龍門縣子，並賜姓宇文氏，升任驃騎大將軍、開府儀同三司，還兼任河東郡守，爵位也升為博平縣公。