공성전(攻城戰)은 성(城)이나 요새와 같은 방어 시설에 의존하고 있는 적을 공격하여 점령하기 위해 벌이는 전투를 의미한다. 한자어 '공(攻, 칠 공)', '성(城, 성 성)', '전(戰, 싸울 전)'이 결합된 단어로, 문자 그대로 '성을 공격하는 전투'라는 뜻이다.
공성전의 기본적인 전략은 첫째로 적의 보급로를 차단하여 고립시키고, 둘째로 방어선에 파상공세를 가하여 취약한 부분을 돌파한 후 내부로 돌입하는 방식으로 진행된다. 역사적으로 공성전을 수행하려면 공격하는 측이 방어하는 측보다 최소 3배 이상의 병력이 필요하다고 알려져 있다.
중세 시대로 접어들면서 보급 차단만으로도 수비 측이 항복하는 경우가 많아졌으며, 이후 성벽을 파괴할 수 있는 공성포(攻城砲)가 도입되면서 공성포를 포격 거리까지 끌고 오면 수비 측이 '명예로운 항복'을 제안하는 형태로 발전하기도 하였다.
고대의 대표적인 공성전으로는 알렉산드로스 대왕(알렉산더)의 티로스 공성전(기원전 332년)이 꼽힌다. 티로스는 두 개의 항구를 보유하여 지상군의 포위만으로는 보급 차단이 어려웠으나, 알렉산드로스는 방파제 위에 공성탑을 건설하고 해군을 동원해 바다 쪽 포위망을 완성한 후 7개월 만에 함락시켰다.
근대에 들어와 요새가 등장하면서 요새를 공격하는 전투 역시 공성전의 범주에 포함된다. 공성전은 군사 전략과 역사에서 매우 중요한 위치를 차지하는 실존하는 개념이며, 다양한 역사 기록과 학술 자료를 통해 그 정의와 사례가 충분히 확인된다.