Родился в посёлке Ивановском, ныне Шатковского муниципального округа Нижегородской области, в семье крестьянина.
В 1932 году после окончания 6 классов школы проживал в городе Балашове Саратовской области, работал слесарем, учился в аэроклубе.
В Красной Армии – с 1937 года.
Окончил Балашовское военное авиационное училище (1941 г.).
С июля 1942 года — на фронтах Великой Отечественной войны.
Принимал участие в боях на Сталинградском, Южном, 4-м и 1-м Украинском фронтах. Участвовал в Сталинградской битве, освобождении Крыма, Украинской ССР и Польши.
К лету 1944 года капитан Захаров был помощником по воздушно-стрелковой службе командира 807-го штурмового авиаполка 206-й штурмовой авиационной дивизии 7-го штурмового авиационного корпуса 8-й воздушной армии 4-го Украинского фронта.
К моменту представления его к званию Героя Советского Союза совершил 110 боевых вылетов на штурмовку скоплений боевой техники и живой силы противника, его важных объектов.
Звание Героя Советского Союза присвоено 2 августа 1944 года.
Погиб при выполнении боевого задания в районе города Клайпеда Литовской ССР.
Награды: ордена Ленина (17.06.1943, 02.08.1944), Красного Знамени (23.09.1942, 24.12.1943).