Родился Попов в 1894 году в станице Преображенской Хоперского округа Области войска Донского (ныне Волгоградской области) в семье донского казака. Окончил учительскую семинарию. В 1916 году призван в Русскую армию. В том же году окончил школу прапорщиков. Получив первые офицерские погоны, отбыл на Юго-Западный фронт. Воевал в Донском казачьем полку, командовал взводом. В Красной армии с 1919 года. Участник Гражданской войны. Начальник штаба 39-й стрелковой дивизии. Воевал в Первой конной армии. В 1922 году окончил Военную академию им. М.В. Фрунзе. После академии был направлен в Туркестан и сражался против басмачей, командуя 6-й отдельной кавалерийской бригадой. С 1928 по 1931 год командовал Украинской кавалерийской школой. Одновременно окончил Курсы усовершенствования высшего начальствующего состава и Курсы единоначальников при Военно-политической академии им. В.И. Ленина. В 1931–1937 годах командовал 12-й кавалерийской дивизией. Комбриг. В 1938 году – командир 4-го казачьего кавалерийского корпуса. Защитил диссертацию по теме «Действия кавалерийского корпуса в прорыве». С 1939 года – на преподавательской работе в Военной академии им. М.В. Фрунзе, доцент. Участник советско-финляндской войны 1939–1940 годов – командир 28-го стрелкового корпуса. Генерал-майор (1940). В начале Великой Отечественной войны командовал 28-м стрелковым корпусом. С первого дня войны корпус в боях – в оборонительном сражении в Западной Белоруссии в районе Брест – Кобрин – Бобруйск. С большими потерями сумел вывести остатки корпуса из окружения, но уже с 15 июля после пополнения корпус вновь вступил в бой под Пропойском. Вскоре там был тяжело ранен. После госпиталя в сентябре 1941 года назначен заместителем командующего 50-й армией. Отличился во время Калужской наступательной операции 1941 года – возглавил подвижную ударную группу армии, которая вошла на узком участке в прорыв немецкой обороны, с марша атаковала Калугу и вскоре завладела этим крупным городом Тульской области. В течение более чем двух лет – с февраля 1942 по апрель 1944 года – командующий 10-й армией. 5 июня 1942 года присвоено звание генерал-лейтенант. В апреле – мае 1944 года – заместитель командующего войсками 1-го Белорусского фронта. Генерал-полковник. С мая 1944 года до конца войны командовал 70-й армией 1-го Белорусского, с ноября 1944 года 2-го Белорусского фронтов. За успешные действия во время Великой Отечественной войны войска, которыми командовал генерал Василий Степанович Попов, 19 раз отмечались в приказах Верховного главнокомандующего И.В. Сталина. 10 апреля 1945 года командарму-70 было присвоено звание Герой Советского Союза: «За умелое управление войсками армии, успешное форсирование реки Висла, захват плацдарма на ее западном берегу, окружение и уничтожение группировки противника в городе Торунь и проявленные при этом мужество и героизм». Указом Президиума Верховного Совета СССР генерал-полковнику Попову Василию Степановичу были вручены орден Ленина и медаль «Золотая Звезда» № 5509. Кроме того, генерал В.С. Попов был награжден двумя орденами Суворова 1-й степени и орденом Кутузова 1-й степени, а также пятью орденами Красного Знамени, орденом Красной Звезды и еще одним орденом Ленина.
Последние бои генерал Попов провел блестяще. Берлинская операция 2-го Белорусского фронта заключалась, как известно, в охвате «логова» с севера. Маршал Рокоссовский включил 70-ю армию генерала Попова как одну из наиболее надежных в состав ударной группировки, которая атаковала в направлении Нойбранденбург, Висмар. Соседи слева – 1-й Белорусский фронт маршала Жукова – замешкались перед внешним обводом обороны Берлина, и у фронтов, обеспечивавших фланги основной ударной группировки, появилась возможность тоже ворваться в «логово» и разделить лавры победителей. У войск 1-го Украинского фронта маршала Конева это получилось. Танки генерала Рыбалко действительно вошли в Берлин почти одновременно с танками маршала Жукова. Но Рокоссовский завяз в тяжелейших боях севернее. И слава покорителя Берлина обошла его.
70-я армия успешно форсировала реки Ост-Одер и ВестОдер и во взаимодействии с 65-й и 49-й армиями разгромила штеттинскую группировку противника. 1 мая овладели городами Росток и Тетеров и к исходу 3 мая 1945 года вышли на побережье Балтийского моря в районе Висмара.
Но в 1942-м об этих городах и реках в Восточной Пруссии солдаты генерала Попова еще и слыхом не слыхивали. В ежедневных донесениях и боевых сводках мелькали другие наименования: Малая Песочня, Покров, Большие Савки, Жилино, Воскресенск, Голосиловка, Лосиное, Ракитное… Здесь проходила линия обороны 10-й армии. До Ростока и Вест-Одера дойдут самые везучие. После двух-трех ранений и контузий.
У генерала Попова был прекрасный начальник штаба – комбриг Степан Иванович Любарский. Образованный, храбрый, в трудный момент умевший взять в руки оружие и повести в бой солдат.