Родился 29 июля 1990 года в нижнем Тагиле. Футболом начал заниматься в 7 лет. Воспитанник мини-футбольного клуба «ВИЗ-Синара». Образование среднее. Женат. Первого тренера зовут Сергей Юрьевич Овечкин.
В 2006 году становится игроком мини-футбольного клуба «ВИЗ-Синара». 21 марта 2007 года было сообщено, что шестнадцатилетний Шатов по итогам сборов взят в аренду футбольным клубом «Урал». В «Урале» Шатов являлся игроком основного состава, проведя за команду более 100 игр. Участник полуфинального матча Кубка России по футболу 2007/08. 19 ноября 2010 года был выбран лучшим игроком команды, заняв первое место в голосовании местных СМИ и болельщиков клуба.
В январе 2012 года Олег отправился на сборы вместе с московским ЦСКА. Однако вскоре появилась информация о том, что полузащитника может подписать «Анжи». В 2012 году подписал четырёхлетний контракт с «Анжи».
26 июля 2012 года в ответном матче квалификационного раунда Лиги Европы, против венгерского «Гонведа», Шатов забил гол, который стал первым голом российского футболиста в европейской кампании «Анжи». В следующем матче отборочного этапа против «Витесса», Олег открыл счет красивейшим голом во втором тайме.
19 августа 2012 года в матче против питерского «Зенита» Олег забил свой первый гол в российской Премьер-лиге. 16 сентября в матче против «Краснодара», Шатов забил один из самых быстрых голов чемпионата, отличившись уже на 33-й секунде матча.
14 августа 2013 года официальные сайты «Анжи» и «Зенита» объявили о переходе Олега в питерский клуб. 24 августа в матче против московского «Динамо» (1:1) Шатов дебютировал за новую команду. В гостевом матче чемпионата России против «Крыльев Советов» оформил дубль; первый мяч Шатова в этом поединке стал победным. В следующей игре российского первенства — в домашнем матче с московским «Спартаком», — вновь стал автором победного мяча.
25 февраля 2014 года в первом матче 1/8 финала Лиги чемпионов забил гол в ворота дортмундской «Боруссии». 9 августа 2014 года в 3-м туре чемпионата России по футболу 2014/2015 в домашнем матче против московского «Торпедо» забил гол и отдал голевую передачу в матче, в котором «Зенит» победил с итоговым счетом 8:1. 20 августа 2014 года забил единственный и победный гол в ворота льежского «Стандарта» с передачи Халка. 24 сентября 2014 года в рамках розыгрыша Кубка России 2014 в 1/16 финала забил гол своей бывшей команде — футбольному клубу «Анжи» — на 31 минуте основного времени матча. Признан болельщиками лучшим игроком «Зенита» в сентябре 2014 года.
Дебют Олега Шатова в молодежной сборной России состоялся 16 ноября 2010 года в товарищеском матче против молодежной сборной Франции, проходившем в городе Ле Ман, Франция. Шатов вышел на замену на 76-й минуте. Матч закончился победой россиян со счетом 1:0.
Свой первый гол за молодежную сборную Шатов забивал 9 февраля, уже во втором своем матче за молодёжку России, в матче против молодежной сборной Украины.
Дебютировал за сборную России в матче против команды Исландии 6 февраля 2013 года, выйдя на замену на 46 минуте игры. На 66-й минуте поразил ворота Ханнеса Халльдоурссона после передачи Романа Широкова.