Михаил Васильев родился 31 октября 1914 года в деревне Михайловка Московской области. Член КПСС с 1940 года. Окончил неполную среднюю школу, затем Московский техникум механической обработки дерева. Работал столяром, мастером в артели «Красный столяр», начальником цеха на фабрике.
В июле 1941 года Васильев был призван в армию и направлен в Подольское артиллерийское училище, которое окончил в 1942 году. В конце апреля 1942 года Васильев прибыл на фронт. Попал в 108-й отдельный истребительный противотанковый дивизион 8-й стрелковой дивизии. Дивизия в составе 13-й армии Брянского фронта держала оборону посёлка Долгое Орловской области.
Именно в этом месте 28 июня 1942 года командование вермахта начало своё грандиозное летнее наступление. Танковые дивизии устремились на позиции советских войск. Батарея Васильева вела огонь по фашистским танкам прямой наводкой. Но удар противника был настолько силён, что, несмотря на потери, танковые дивизии через позиции павших защитников прорвались в глубину обороны. Советским войскам пришлось отступать. К 5 июля 1942 года фронт докатился до посёлка Тербуны, где советские бойцы, в том числе и Васильев, стали стеной на пути фашистской танковой армады. И тогда гитлеровские полчища повернули на юг в направлении города Воронежа на тылы Юго-Западного фронта.
После поражения фашистов под Сталинградом войска Брянского фронта в январе 1943 года перешли в наступление. Батарея Васильева участвовала в освобождении станции Касторное, а в конце февраля 1943 года вышла на подступы к городу Малоархангельску. Здесь в апреле 1943 года в районе станции Тросно Васильева ранило. Но он остался в строю. За героизм, проявленный в ходе наступления, Васильев получил первую награду – орден Красной Звезды.
В июле 1943 года Васильев участвовал в ожесточённый боях на Курской дуге. Его батарея отбила все многочисленные атаки танков и пехоты фашистов, рвавшихся в направлении Курска. В одном из боёв по освобождению станции Глазуновка Васильев был вторично ранен. Но и тут он отказался от госпитализации. Вскоре за успешную организацию оборонительных действий батареи во время боёв на Курской дуге он получил орден Отечественной войны 1-й степени.
Началось преследование отступающего противника. В сентябре 1943 года 8-я стрелковая дивизия вышла к Десне у города Коропа Черниговской области. Батарее капитана Васильева было приказано форсировать преграду первой вместе со стрелковыми подразделениями, чтобы потом в боях за плацдарм, поддерживать их своим огнём, оберегая от танков противника.
В середине сентября 1943 года на сооружённом сапёрами пароме батарея Васильева переправилась на противоположный берег Десны у села Оболонье. Васильев расположил батарею на высоте 179,0. Всю ночь трудились артиллеристы. Готовили огневые позиции, рыли щели для боеприпасов, для себя на случай бомбёжки. Жестокий бой на плацдарме разгорелся 13 сентября. Сначала самолёт-разведчик немцев пролетел вдоль линии обороны. После разведчика волнами прошли вражеские бомбардировщики. Потом на позиции наших войск обрушился шквал артиллерийского и миномётного огня. Только после этого, наблюдая в свой бинокль, Васильев заметил появление на горизонте танков противника. Васильев насчитал 12 танков и 4 штурмовых орудия. По приказу комбата батарея открыла огонь. Было подбито 3 танка. Уцелевшие машины стали пятиться назад. Атака врагу не удалась.
В последнюю декаду сентября 1943 года дивизион вместе с другими частями дивизии уже вёл бои на западном берегу Днепра, а 26 сентября был захвачен плацдарм на реке Припять севернее Чернобыля. Более двух недель артиллеристы Васильева вместе со стрелковыми подразделениями вели почти непрерывные бои. Особенно ожесточённо они проходили в районе станции Янов. Противник, получив подкрепление, отрезал защитников плацдарма от Припяти. Насмерть стояли батарейцы Васильева, бились до последнего снаряда, до последней гранаты. Многие погибли в тех боях на Припяти, но не сдались врагу.
Указом Президиума Верховного Совета СССР от 16 октября 1943 года за успешное форсирование Десны и Припяти, прочное закрепление плацдарма на их западном берегу и проявленные при этом отвагу и геройство капитану Михаилу Николаевичу Васильеву было присвоено звание Героя Советского Союза с вручением ордена Ленина и медали «Золотая Звезда».
После войны подполковник Васильев продолжал служить в армии. С августа 1956 года – на Сахалине. Был заместителем командира 357-го стрелкового полка по снабжению, затем, с апреля 1957 года по сентябрь 1959 года, - начальник тыла 390-го мотострелкового полка 56-й мотострелковой дивизии 15-й армии ДВВО в городах Анива и Южно-Сахалинск. Награждён орденом Ленина, орденами Александра Невского, Отечественной войны 1-й степени, Красной Звезды и медалями.
Уволившись в запас, жил и работал в городе Дрогобыче Львовской области, был начальником школы гражданской обороны.
Скончался 25 августа 1979 года. В городе Бучач Тернопольской области его именем названа улица, установлена мемориальная доска.