Родился в крестьянской семье.
Окончил Староверовскую начальную школу, работал в колхозе «Путь Ленина».
С 1933 проживал в деревне Тарай Качугского района Иркутской области.
13 сентября 1941 призван в ряды Рабоче-крестьянской Красной армии. Участвовал в боях на Калининском фронте, дважды был ранен.
К августу 1943 гвардии ефрейтор Стефан Карпов командовал пулемётным расчётом 279-го гвардейского стрелкового полка 91-й гвардейской стрелковой дивизии 39-й армии Калининского фронта.
Отличился во время освобождения Смоленской области. 13 августа — 10 сентября 1943 года Карпов пулемётным огнём поддерживал пехотные подразделения в ходе прорыва вражеской обороны в районе деревень Старая Капешня и Кривцы, принимал участие в отражении немецкой контратаки в районе деревни Клиники. Благодаря расчёту Карпова была обеспечена переправа советских войск на западный берег реки Веленя. В ходе боёв за освобождение Духовщины Карпов подавил 13 немецких огневых точек и уничтожил несколько десятков солдат и офицеров противника.
12 октября 1943 С.А. Карпов скончался от полученного в бою тяжёлого ранения. Похоронен в братской могиле на Тихвинском кладбище Смоленска.
Указом Президиума Верховного Совета СССР от 4 июня 1944 года за «образцовое выполнение заданий командования и проявленные мужество и героизм в боях с немецкими захватчиками» гвардии ефрейтор Стефан Карпов посмертно был удостоен высокого звания Героя Советского Союза. Также был награждён орденом Ленина и медалью «За боевые заслуги».