Вихованець одеського «Чорноморця», в якому виступав з липня 2012 року[1]. Виступав за юніорську та молодіжну команду «моряків». У футболці дорослої команди «Чорноморця» дебютував 21 вересня 2016 року в програному (0:2) виїзному поєдинку 1/16 фіналу кубку України проти охтриського «Нафтовика». Михайло вийшов на поле на 79-й хвилині, замінивши Максима Третьякова[2]. На початку березня 2018 року відправився в оренду до «Жемчужини». Дебютував у футболці одеського колективу 18 березня 2018 року в програному (0:1) домашньому поєдинку 23-о туру Першої ліги проти винниківського «Руху». Попов вийшов на поле в стартовому складі, а на 57-й хвилині його замінив Олексій Чернишов[3]. До травня 2019 року зіграв 9 матчів у Першій лізі, після чого оренда була достроково припинена.
У липні 2018 року вільним агентом перейшов у «Кремінь». Дебютував за кременчуцьку команду 18 серпня 2018 року в переможному (1:0) домашньому поєдинку 5-о туру групи «Б» Другої ліги проти «Нікополя». Михайло вийшов на поле на 77-й хвилині, замінивши Костянтина Чернія[4]. Через чотири дні вийшов на поле в матчі кубку України[5], після чого у футболці «Кременя» більше не грав.
У середині березня 2019 року став одним з 13-и новачків ФК «Суми»[6]. Дебютував у футболці «городян» 28 березня 2019 року в програному (0:7) домашньому поєдинку 20-о туру Першої ліги проти «Волині». Попов вийшов на поле в стартовому складі, а на 63-й хвилині його замінив Сергій Островерх[7]. Єдиним голом за сумський колектив відзначився 2 червня 2019 року в програному (1:3) виїзному поєдинку плей-оф за право збереження місця в Першій лізі проти «Черкащини-Академії». Михайло вийшов на поле в стартовому складі та відіграв увесь матч, а на 24-й хвилині відзначився голом[8]. У складі «Сум» зіграв 8 матчів у Першій лізі та 2-поєдинки (1 гол) у плей-оф чемпіонату.
Напередодні старту сезону 2019/20 років приєднався до новоствореного вірменського клубу «Масіс», який стартував у Першій лізі чемпіонату Вірменії.
Примітки
↑Профіль гравця на офіційному сайті Чорноморця (Одеса) (рос.)