В годы советско-финской войны (1939—1940) командовал Отдельным разведывательным лыжным батальоном 596-го стрелкового полка 122‑й дивизии. Во время одной из операций взял в плен офицеров немецкого Генерального штаба.
После окончания советско-финской войны назначен на должность помощника командира 596-го полка по строевой части. С октября 1940 года — командир 15-го отдельного дисциплинарного батальона Ленинградского военного округа (15 одисб, Новгородская область). В начале Великой Отечественной войны, в июле 1941 года, назначен командиром 3-го гвардейского стрелкового полка 1-й гвардейской дивизии народного ополчения Ленинградского фронта (основу полка составили бойцы бывшего 15 одисб).
21 ноября 1941 — назначен командиром 1-го Особого лыжного полка моряков КБФ. Вопреки разговорам о том, что Маргелов «не приживётся», морпехи приняли командира, что особенно подчёркивало обращение к нему по флотскому эквиваленту звания «майор» — «Товарищ капитан 3-го ранга». Маргелову же запала в сердце удаль «братишек» . Для того, чтобы десантники переняли славные традиции старшего брата — морской пехоты и с честью их продолжали, Маргелов добился, чтобы десантники получили право носить тельняшки.
В дальнейшем — командир 13-го гвардейского стрелкового полка, начальник штаба и заместитель командира 3-й гвардейской стрелковой дивизии. После ранения командира дивизии П. Г. Чанчибадзе командование на время его лечения перешло к начальнику штаба Василию Маргелову. Под руководством Маргелова 17 июля 1943 года бойцы 3-й гвардейской дивизии прорвали 2 линии обороны гитлеровцев на Миус-фронте, овладели селом Степановка и обеспечили плацдарм для штурма «Саур-могилы».
С 1944 года — командир 49-й гвардейской стрелковой дивизии 28-й армии 3-го Украинского фронта. Руководил действиями дивизии при форсировании Днепра и освобождении Херсона, за что в марте 1944 года был удостоен звания Героя Советского Союза. Под его командованием 49-я гвардейская стрелковая дивизия участвовала в освобождении Юго-Восточной Европы.
За время войны комдив Маргелов был десять раз упомянут благодарственных в приказах Верховного Главнокомандующего На Параде Победы в Москве гвардии генерал-майор Маргелов командовал батальоном в сводном полку 2-го Украинского фронта.