百善鎮,北京市昌平區下轄鎮,地處昌平區東南部,位於東經116°16'34"~116°22'00",北緯40°07'01"~40°11'52"之間。東臨小湯山鎮,南瀕溫榆河與北七家鎮毗鄰,西接沙河高教園區與沙河鎮接壤,北依京密引水渠與南邵鎮、崔村鎮接連。鎮域面積35.19平方千米。
民國三十七年(1948年)12月12日,百善地區屬昌順聯合縣第十區。1949年8月,屬昌平縣第三區。1950年2月,分屬昌平縣二區、四區,各自然村建村政府。1953年7月,村政府撤銷建鄉,百善鄉轄百善、孟祖2村,獅子營鄉轄良各莊、泥窪、鍾營、獅子營4村,牛房圈鄉轄呂各莊、半壁街、二德莊、牛房圈4村,屬四區。上東郭、下東郭2村屬辛立屯鄉,東沙屯屬王莊鄉,屬二區。1956年2月,百善、獅子營、牛房圈3鄉合併爲百善鄉。東沙屯、上東郭、下東郭屬鬆蘭堡鄉。1958年,屬紅旗人民公社又屬小湯山公社,各鄉稱工作站。1960年1月,屬昌平縣。1961年5月,成立百善人民公社。1982年7月,公社改鄉。1997年,撤鄉改鎮,轄現域。截至2018年末,百善鎮有戶籍人口16961人。截至2020年6月,百善鎮下轄2個社區和13個行政村,鎮政府駐昌平區百善鎮泥窪村。
2011年,百善鎮工業總產值達到7.1億元,比上年增長36.9%。財政總收入3626萬元,比上年增長16.5%。工商稅收完成2億元,比上年增長19.7%。從各主要稅種看,完成營業稅2262.5萬元,增值稅7326.2萬元,企業所得稅6335.6萬元,個人所得稅2231.1萬元,分別比上年增長-40%、37.9%、66.3%、67%。