황해북도 서부에 있는 군. 북부는 연탄군, 동부는 서흥군, 남부는 은파군ㆍ인산군, 서부는 사리원시와 잇닿아 있다. 서남~동북(묘성리~은정리) 간의 길이는 37km이고, 북서~남동(오봉리~구연리) 간의 길이는 17km이며, 면적은 436.04㎢로서 도 전체면적의 4.61%를 차지한다. 현재 행정구역은 1읍 1구 18리로 구성되어 있으며 군 소재지는 봉산읍이다.
1413년에 황해도 봉주(鳳州)를 개편하여 황해도에 신설한 군인데, 봉주의 ‘봉(鳳)’자와 고을 ‘주(州)’자를 ‘천(川)’이나 ‘산(山)’으로 고치던 규례에 따라 ‘산(山)’으로 고쳐 봉산군이라 하였다. 봉산은 봉황새가 많은 산이라는 뜻이다.
봉산군 지역의 지탑리와 봉산읍 등 지역에서 신석기시대, 청동시대의 유적유물이 발굴된 것은 적어도 신석기시대부터 봉산군 지역에서 이미 인류가 생존해 있었다는 것을 확인할 수 있다. 삼국시대에는 고구려의 휴암군(鵂嵒郡)에 속해 있었고, 통일신라(757년) 때에는 서암군(棲嵒郡)에 속해 있었다.
고려(995년)시대에 관내도(關內道) 봉주로 되었고, 1010~1030년에 서해도(西海道) 봉주로 되었으며, 1285년에 봉주를 봉양군(鳳陽郡)으로 개편하면서 서해도 봉양군으로 되었다. 1395년 조선시대에는 서해도를 풍해도로 개칭하고 봉양군을 다시 봉주(鳳州)로 개편하면서 풍해도(豊海道) 봉주로 되었고, 1413년에 봉주를 봉산군(鳳山郡)으로 개편하여 풍해도 봉산군으로 되었다.
1417년에 풍해도를 황해도로 개편하면서 황해도 봉산군으로 되었다가, 1499년에 황주목(黃州牧)에 편입되면서 황해좌도(黃海左道) 봉산군으로 되었으며, 1757년에 동선방(洞仙坊), 토성방(土城坊), 산수방(山水坊), 구연방(龜淵坊), 감당방(甘棠坊), 무릉방(武陵坊), 묵천방(墨川坊), 어사방(御史坊), 초구방(楚邱坊), 와현방(臥峴坊), 서호방(西湖坊), 미산방(嵋山坊), 문정방, 사원방(沙院坊), 사인방(舍人坊) 등 15개 방을 관할하였다.
1895년에 해주부(海州府) 봉산군으로 개편되었으며, 1896년에 황해도 봉산군으로 되면서 어사방을 폐지하고 기산방(岐山坊), 영천방(靈泉坊), 용산방(龍山坊), 만천방(萬泉坊), 종암방(鍾岩坊), 적성방(赤城坊), 전산방(錢山坊) 등 7개 방을 신설하여 동선방, 토성방, 산수방, 구연방, 감당방, 무릉방, 묵천방, 초구방, 와현방, 서호방, 미산방, 사원방, 사인방, 기산방, 영천방, 용산방, 만천방, 문정방(文井坊), 종암방, 적성방, 전산방 등 21개 방을 개편 관할하였다. 조선 말에 방을 면으로 개편하여 동선면(洞仙面), 토성면(土城面), 산수면(山水面), 구연면(龜淵面), 감당면(甘棠面), 무릉면(武陵面), 묵천면(墨川面), 초구면(楚邱面), 와현면(臥峴面), 서호면(西湖面), 미산면(嵋山面), 사원면(沙院面), 사인면(舍人面), 기산면(岐山面), 영천면(靈泉面), 용산면(龍山面), 만천면(萬泉面), 문정면(文井面), 종암면(鍾岩面), 적성면(赤城面), 전산면(錢山面) 등 21개 면을 관하에 두었다.
1914년 행정구역 폐합 시에 감당면과 적성면을 병합하여 덕재면(德在面)으로, 전산면과 용산면을 병합하여 쌍산면(雙山面)으로, 기산면과 묵천면을 병합하여 기천면(岐川面)으로, 서호면과 종암면을 병합하여 서종면(西鐘面)으로, 초구면과 와현면을 병합하여 초와면(楚臥面)으로 각각 개편하고, 미산면을 문정면에, 무릉면을 평산군 문무면에 각각 편입하여 기천면, 덕재면, 쌍산면, 초와면, 문정면, 서종면, 동선면, 토성면, 산수면, 구연면, 사인면, 사원면, 만천면, 영천면 등 14개 면, 136개 리를 관할하였다.
1930년에는 사원면을 사리원면(沙里院面)으로 개칭하였으며, 1939년에 사리원면이 사리원읍(沙里院邑)으로 승격되었다가, 1945년에 사리원읍이 다시 사리원면으로 되었다. 1947년에 사리원면을 사리원시(沙里院市)로 승격하였다. 1950년에 봉산군은 산하에 봉산읍, 동선면, 토성면, 산수면, 구연면, 덕재면, 쌍산면, 기천면, 초와면, 문정면, 서종면, 영천면, 만천면, 사인면 등 1읍, 13면을 두고 있었다.
1953년에 어수리가 어수노동자구로 승격되고, 구룡리 일부, 만금리 일부, 미곡리 일부가 사리원시에 편입되었으며, 구룡리 일부가 송산리(松山里)로 개편되었다. 1954년에 황해북도 봉산군으로 개편되면서 황주군 침촌리 일부가 용림리에, 유정리 일부가 관정리에, 관정리 일부가 유정리에 각각 편입되었고, 1956년에 용림리와 계동리를 병합하여 정방리(正方里)를 신설하였으며, 황주군 구포리 일부가 봉의리에 흡수되었다.
1958년에 봉산읍 일부 지역이 마산리(馬山里)로 개편되고 사산리가 청계리에, 봉산읍 일부가 가촌리에, 가촌리 일부가 봉산읍에 각각 편입되었다. 1961년에 유청리 일부가 오봉리에, 오봉리 일부가 천덕리에, 구산리가 청계리에 각각 흡수되었으며 도림리가 일부 지역을 분리하여 봉산읍에 편입하고 송산리 일부를 흡수하는 동시에 사리원시에 이관되었다.
1973년에 미곡리, 만금리, 어수노동자구가 사리원시에 편입되었고, 1981년에 해서리, 신창리가 사리원시에 이관되었다. 1982년에 은파군 청룡리가 흡수되었고, 1985년에 청룡리 일부가 인산군 상하리에 편입되었다. 1986년에 선정리, 봉의리, 대룡리, 문현리, 정방리가 사리원시에 넘어갔으며, 1989년에 은파군 묘송리, 서흥군 은정리, 수곡리, 삼천리가 편입되었다.
1992년에 청계리 일부 지역을 분리하여 송정노동자구(松亭勞動者區)를 신설하였다. 2002년 10월 현재 행정구역은 1읍(봉산읍), 1구(송정노동자구), 18리(가촌리, 관정리, 구연리, 구읍리, 독정리, 유정리, 마산리, 묘송리, 삼천리, 송산리, 수곡리, 오봉리, 은정리, 지탑리, 천덕리, 청계리, 청룡리, 토성리)로 구성되어 있다. 봉산군 소재지는 봉산읍이다.