Виктор Петрович Астафьев родился 1 мая 1924 года в селе Овсянка, ныне Красноярский край в семье Петра Павловича Астафьева и Лидии Ильиничны Потылицыной. Он был третьим ребёнком в семье, однако две его старшие сестры умерли во младенчестве. Через несколько лет, после рождения сына Пётр Астафьев был осуждён к лишению свободы за вредительство. В 1931 году, во время очередной поездки Лидии Ильиничны к мужу, лодка, в которой среди прочих находилась она, перевернулась. Лидия Ильинична, упав в воду, зацепилась косой за сплавной бон и утонула. Виктору тогда было семь лет. После того, как отец Виктора вышел из тюрьмы и ещё раз женился, семья переехала в город Игарка Красноярского края. Когда отец попал в больницу, а новая семья отвернулась от Виктора, он оказался в буквальном смысле на улице. Несколько месяцев он жил в заброшенном здании, однако после серьёзного проступка в школе был направлен в детский дом.
Окончив школу ФЗО, работал на станции Енисей сцепщиком и составителем поездов, дежурным по станции.
В 1942 году ушёл добровольцем на фронт несмотря на то, что как железнодорожник имел бронь. Военную подготовку получил в учебном автомобильном подразделении в Новосибирске. Весной 1943 года был направлен в действующую армию. Был шофёром, связистом в гаубичной артиллерии, после тяжёлого ранения в конце войны служил во внутренних войсках на Западной Украине.
Был награждён орденом Красной звезды, медалями «За отвагу», «За освобождение Варшавы» и «За победу над Германией».
В бою 20 октября 1943 года красноармеец Астафьев В. П. четыре раза исправлял телефонную связь с передовым НП. При выполнении задачи, от близкого разрыва бомбы, был засыпан землёй. Горя ненавистью к врагу, тов. Астафьев продолжал выполнять задачу и под артиллерийско-миномётным огнём, собрав обрывки кабеля, и вновь восстановил телефонную связь, обеспечив бесперебойную связь с пехотой и её поддержку артиллерийским огнём.
— Из наградного листа на медаль «За отвагу»
Демобилизовался в звании «красноармеец» в 1945 году, уехал на Урал, в город Чусовой Молотовской области, ныне Пермский край; работал слесарем, подсобным рабочим, учителем, дежурным по вокзалу, кладовщиком. В том же году женился на Марии Семёновне Корякиной; у них было трое детей: дочери Лидия и Ирина и сын Андрей. Астафьев имел также двух приёмных дочерей — Анастасию и Викторию.
С 1951 года работал в редакции газеты «Чусовской рабочий», где впервые опубликовал свой рассказ «Гражданский человек». Писал репортажи, статьи, рассказы. Первая его книга «До будущей весны» вышла в Молотове, ныне Пермь, в 1953 году.
В 1958 году Астафьев был принят в Союз писателей СССР.
В 1959—1961 годах учился на Высших литературных курсах в Москве.
В 1962 году Астафьев переехал в Пермь, в 1969 году в Вологду, а в 1980 году уехал на родину — в Красноярск.
С 1989 года по 1991 год Астафьев был народным депутатом СССР.
В октябре 1990 года подписал «Римское обращение», участников конференции «Национальные вопросы в СССР: обновление или гражданская война?».
5 октября 1993 года подпись Астафьева появилась в «Письме 42-х» в поддержку силового разгона съезда народных депутатов и Верховного Совета России. По утверждению поэта Юрия Кублановского, Астафьев заявлял, что его подпись поставили без спроса.