Михаил Иванович Иванов родился 4 сентября 1919 года в деревне Холм (ныне — Новодугинский район Смоленской области).
В 1937 году переехал в Москву, работал электриком на автозаводе, одновременно занимался в аэроклубе. В 1940 году Иванов был призван на службу в Рабоче-Крестьянскую Красную Армию.
В 1941 году он окончил Борисоглебску военную авиационную школу пилотов.
С августа 1943 года — на фронтах Великой Отечественной войны.
К концу марта 1945 года старший лейтенант Михаил Иванов командовал звеном 657-го штурмового авиаполка 196-й штурмовой авиадивизии 2-го Белорусского фронта. К тому времени он совершил 100 боевых вылетов на штурмовку и бомбардировку скоплений боевой техники и живой силы.
Указом Президиума Верховного Совета СССР от 18 августа 1945 года старший лейтенант Михаил Иванов был удостоен высокого звания Героя Советского Союза.
После окончания войны Иванов продолжил службу в Советской Армии.
В 1948 году он окончил Краснодарскую высшую школу штурманов.
В 1958 году в звании майора Иванов был уволен в запас. Проживал в Москве, работал начальником штаба гражданской обороны Кунцевского райпищеторга. Умер 9 мая 1996 года. Похоронен на Рублёвском кладбище в Москве.