Родился 14 сентября 1922 года в деревне Слутка Новгородского района Новгородской области в семье рабочего. Русский. Член ВКП(б)/КПСС с 1944 года. Окончил 10 классов. В Красной Армии с 1940 года. В 1942 году окончил Сталинградскую военно-авиационную школу. Участник Великой Отечественной войны с апреля 1943 года.
Свой первый бой Сергей Шпуняков провёл 20 апреля 1943 года. Полк получил приказ: выделить две авиаэскадрильи для сопровождения штурмовиков, летевших в Новороссийск. Там, на Малой земле, велись ожесточённые бои. Когда самолёты взлетели, Сергей Шпуняков шёл крайним слева, на высоте 3500 метров. Ему была поставлена задача: спасти десант Цезаря Куникова, который атаковали две фашистские дивизии. В небе начался бой. Лётчик Сергей Шпуняков оказался в хвосте вражеской эскадрильи и начал атаку, подбив самолёты противника. Но и его самолёт был подбит. На плохо управляемой машине он пошёл в сторону аэродрома. В пути его настигли два фашистских лётчика, которые изрешетили самолёт Шпунякова боевыми очередями. Истребитель свалился в штопор, из которого Сергею Шпунякову удалось вывести самолёт лишь над самой землёй. В результате он дотянул до аэродрома и смог приземлиться. Как только раненого Сергея Шпунякова увезли в госпиталь, прилетел на У-2 командующий 4-й воздушной армией генерал-лейтенант К.А.Вершинин. Он немедленно дал указание: наградить Сергея Шпунякова за спасение машины. Это был первый орден Сергея Павловича Шпунякова — орден Красной Звезды.
Заместитель командира эскадрильи 402-го Севастопольского истребительного авиационного полка (265-я Мелитопольская истребительная авиационная дивизия, 3-й Никопольский истребительный авиационный корпус, 16-я воздушная армия, 1-й Белорусский фронт) старший лейтенант Сергей Шпуняков к маю 1945 года совершил 335 боевых вылетов, из них на прикрытие боевых порядков своих войск — 225. В 51 воздушном бою сбил 17 самолётов противника лично и 7 — в группе, а 5 уничтожил на земле. Сергей Шпуняков воевал под командованием командира корпуса Е.Савицкого.
Указом Президиума Верховного Совета СССР от 15 мая 1946 года за образцовое выполнение боевых заданий командования на фронте борьбы с немецко-фашистскими захватчиками и проявленные при этом мужество и героизм, старшему лейтенанту Шпунякову Сергею Павловичу присвоено звание Героя Советского Союза с вручением ордена Ленина и медали «Золотая Звезда» (№7045).
После войны продолжал службу в ВВС СССР. В 1945 году окончил Высшие офицерские летно-тактические курсы, в 1955 году — Военно-воздушную академию. Был командиром полка на Тоцком полигоне, затем проходил службу в Якутии. С 1969 года полковник С.П.Шпуняков — в запасе. Жил в городе-герое Одессе. Работал начальником аэропорта, в окружном Доме офицеров, в 1983-1986 годах руководителем клуба юных летчиков в республиканском пионерском лагере ЦК ЛКСМУ «Молодая гвардия». В середине 1990-х годов он вернулся в родной Великий Новгород. В последние годы работал председателем областного общественного благотворительного фонда «Победа», был членом Всероссийской ассоциации Героев Советского Союза и полных кавалеров ордена Славы. Скончался 2 января 2004 года. Похоронен на Аллее Героев на Западном кладбище Великого Новгорода.
Награжден орденом Ленина, 2 орденами Красного Знамени, 2 орденами Отечественной войны 1-й степени, 3 орденами Красной Звезды, медалями, а также американским орденом «Лётный крест за отличие».
Его имя долгое время носил пионерский отряд школы №15 в Великом Новгороде. Именем Героя названа общеобразовательная школа №16 в посёлке Кречевицы. В городе Великий Новгород на доме №41/2 по проспекту Александра Корсунова, в котором жил С.П.Шпуняков, 4 мая 2005 года установлена мемориальная доска. Почетный гражданин города Вольск Саратовской области, города Мелитополь Запорожской области Украины, города Никополь Днепропетровской области Украины и посёлка городского типа Аскания-Нова Херсонской области Украины.
Двоюродный дед дочери Шпуняковой Елены, проживающей в Венгрии.