Михайло Ристич родился 31 октября 1995 года в городе Биелина, Сербская Республика. Футболом начал заниматься с детства в сербской команде «Рудар» в городе Углевик.
В начале 2013 года футболист присоединился к молодежной команде «Црвены Звезды» в городе Белград. Выступал за юношескую сборную Сербии до 19 лет. С тех пор Михайло Ристич провел в рядах «Црвены Звезды» 26 матчей чемпионата Сербии, забив в них восемь мячей и сделав столько же результативных передач.
В последнем, тридцатом туре сезона 2012/2013 года Михайло был включен в заявку на матч против «Войводины», однако на поле так и не появился. Дебют полузащитника в составе «Црвены Звезды» состоялся 9 августа 2014 года, когда он на 82-й минуте заменил Вукана Савичевича в игре с клубом «Раднички» из города Ниш.
Михайло Ристич стал чемпионом Сербии в сезоне 2015/2016 года.
В 2017 году согласован переход из ФК «Црвены Звезды» в ФК «Краснодар». Молодой полузащитник подписал с клубом личный контракт, рассчитанный до 30 июня 2022 года.
В чемпионате России дебютировал 31 июля в гостевом матче против московского «Спартака» (0:2), выйдя на замену на 75-й минуте.
Михайло Ристич - левша, и основное его амплуа - левый защитник. Однако вместе с тем он способен удачно играть и на других позициях - левого полузащитника, опорного полузащитника и даже центрального полузащитника «box to box».