Родился 17 августа (по старому стилю 5 августа) 1898 года в деревне Войлово Тартаковской волости Старицкого уезда Тверской губернии. Русский. Из крестьян. В 1913 году окончил Тверское городское «высшее-начальное училище». работал слесарем на заводах в Петрограде. В декабре 1917 года вступил в РСДРП, активный участник бурных революционных событий 1917 года, в том числе 7 ноября (по ст.ст. 25 октября) участвовал в штурме Зимнего дворца.
Как активный петроградский коммунист, Захаров был направлен в только что начавшую формироваться Красную Армию. В 1918 году окончил 2-е Советские Петроградские артиллерийские курсы. С ноября 1918 года на фронтах Гражданской войны, с декабря этого года командовал артиллерийской батареей в 10-й армии под Царицыном. В дальнейшем воевал против войск генерала А. И. Деникина и белых казачьих войск на Северном Кавказе и на Ставрополье. Был командиром артиллерийского дивизиона, начальником артиллерийского снабжения стрелковой дивизии, помощником начальника штаба бригады по оперативной части. В 1920—1921 годах участвовал в борьбе с политическим бандитизмом на Северном Кавказе. Летом 1919 года прошел короткое обучение в Высшей школе штабной службы.
В межвоенный период М. Захаров много учился: в 1924 году он окончил Харьковские повторные курсы комсостава, в 1928 году — факультет снабжения Военной академии имени М. В. Фрунзе, в 1933 году — оперативный факультет в той же академии, в 1937 году — Военную академию Генерального штаба.
До 1925 года служил в штабе стрелковой дивизии. В июне 1928 — ноябре 1932 года находился на штабной работе в Белорусском военном округе: помощник начальника и начальник организационно-мобилизационного отдела управления снабжения штаба округа. С июля 1933 по февраль 1936 годы был начальником оперативного отдела штаба Белорусского военного округа. В феврале-октябре 1936 года командовал стрелковым полком. После окончания академии с июля 1937 — начальник штаба Ленинградского военного округа. С мая 1938 года — помощник начальника Генерального штаба РККА. С мая 1940 года — начальник штаба Одесского военного округа.
Совершил выдающийся и по тем временам исключительно рискованный поступок: сделав вывод из имеющихся разведданных о готовности врага к нападению на СССР, отдал приказ о приведении войск округа в боевую готовность, о занятии приграничных укреплений и выводе войск из мест постоянной дислокации, о перемещении штаба округа на передовой полевой командный пункт, о немедленном перемещении авиации по полевым аэродромам (в ряде публикаций указывается, что Захаров убедил отдать такой приказ командующего округом Я. Т. Черевиченко). Начало войны оставило данную инициативу без последствий, а войска округа избежали разгрома и организованно вступили в бой. Советский ас-истребитель маршал авиации А. И. Покрышкин, служивший перед войной в ВВС Одесского военного округа, вспоминает в своих мемуарах «Небо войны», что когда утром 22 июня вражеская авиация разбомбила постоянный аэродром его полка, там оказался уничтоженным единственный находившийся на аэродроме самолет, не успевший накануне перелететь на запасной аэродром из-за поломки.
С июля 1941 года — начальник штаба Главного командования войсками Северо-Западного направления. С августа 1941 года — заместитель начальника Главного управления Тыла Красной Армии. С декабря 1941 года и до конца войны — в действующей армии, последовательно занимал должности начальника штаба Калининского (с декабря 1942), Резервного (с апреля 1943), Степного (с июня 1943), 2-го Украинского (с октября 1943 по май 1945) фронтов. Часто был начальником штаба разных фронтов при командующем И. С. Коневе (до мая 1944). Особенно успешно проявил себя в таких крупных операциях, как Белгородско-Харьковская, Кировоградская, Корсунь-Шевченковская, Уманско-Ботошанская, Ясско-Кишиневская, Дебреценская, Будапештская, Венская, Пражская. Кроме того, штабы этих фронтов под руководством генерала М. В. Захарова самостоятельно разработали и провели около 20 фронтовых наступательных операций.
С июля 1945 года — начальник штаба Забайкальского фронта. В ходе Советско-японской войны в августе 1945 года фронт провёл Хингано-Мукденскую наступательную операцию.
С октября 1945 года М. В. Захаров — начальник Высшей военной академии (тогдашнее наименование Военной академии Генерального штаба). С января 1949 года — заместитель начальника Генерального штаба по разведке — начальник Главного разведывательного управления Генерального штаба. С июля 1952 года — Главный инспектор Советской Армии. С мая 1953 года — командующий войсками Ленинградского военного округа. С ноября 1957 года — Главнокомандующий Группой советских войск в Германии.
С апреля 1960 года — начальник Генерального штаба Вооружённых Сил СССР. В марте 1963 года понижен в должности до начальника Военной академии Генерального штаба (в некоторых мемуарах упоминается о предшествующем этому событию конфликте М. В. Захарова с Н. С. Хрущёвым по какому-то военному вопросу). Сразу после отстранения Хрущёва от власти, в ноябре 1964 года Захаров повторно назначен вместо погибшего в авиационной катастрофе С. С. Бирюзова начальником Генерального штаба Вооружённых Сил СССР — первым заместителем Министра обороны СССР. В 1967 году находился в длительной командировке в Египте, решая вопросы восстановления египетской армии после разгрома от Израиля в Шестидневной войне.
Член ЦК КПСС с 1961 г. Депутат Верховного Совета РСФСР 2-го (1947—1952) созыва. Депутат Верховного Совета СССР 4-8-го (1954—1972) созывов.
С сентября 1971 года — генеральный инспектор Группы генеральных инспекторов Министерства обороны СССР. Похоронен в Кремлёвской стене на Красной площади в Москве.