В футбольную команду «Искра» попал в семь лет, когда его, играющего с другими детьми на стадионе, заметил руководитель клуба. Начинал на позиции крайнего нападающего. Во время выступлений в любительской лиге был замечен Константином Бесковым и приглашён в «Динамо» Москва.
В составе бело-голубых тогда выступало много хороших футболистов: Маслов, Аничкин, Якубик, Гершкович, Байдачный, Долматов и другие. Пробиться в основной состав было очень трудно, и Гаврилов нечасто выходил на поле.Первым сезоном для Гаврилова, когда он смог проявить себя, стал 1975 год.
В тот год он помог «Динамо» завоевать бронзовые медали, выступая на месте диспетчера, забил 3 мяча. Однако уже в следующем году, с приглашением в команду Максименкова и Минаева, которые также претендовали на позицию диспетчера на поле, конкуренция за место в составе обострилась. Гаврилов эту конкуренцию не выдержал, но причина была не в игровых качествах — в 1976 году он получил травму седалищного нерва, из-за которой практически весь сезон лечился.
В 1977 году Бесков, ставший тренером московского «Спартака» , пригласил Гаврилова, который стал в команде ключевым полузащитником, раскрылся его комбинационный талант диспетчера. Связки Гаврилов — Ярцев, а затем Гаврилов — Родионов составляли фирменный стиль команды. Действуя из глубины поля, Гаврилов отдавал своевременные и остроумные пасы (как правило — вперед, вразрез), настолько удобные для адресата, что тому оставалось лишь пробить мимо вратаря. Гаврилов не только отличался точным пасом, но и результативной игрой в атаке.
В 1981 году он забил 21 мяч, а в 1983 с 18 голами стал лучшим бомбардиром чемпионата. Всего за свою карьеру в «Спартаке» Гаврилов забил 90 мячей, 10 голов — в сборной страны, вошёл в символический Клуб Григория Федотова (140 голов).
Он многократно входил в список 33 лучших футболистов СССР.
В 1985 году Гаврилову пришло приглашение из венского «Рапида» . Бесков дал согласие на переход футболиста, но Спорткомитет СССР не разрешил это сделать.
В итоге Гаврилов оказался в «Днепре» . По взаимной договоренности провел в команде только сезон, после чего вернулся в Москву.
В 1987 году выступал в московском «Локомотиве» в первой лиге.
В 1988 году играл в Финляндии, в клубе ППТ Пори, где провёл два сезона играющим тренером и вернулся в «Локомотив» . Благодаря усилиям Гаврилова команда вышла в финал Кубка СССР 1990 года, однако в финале Гаврилов не играл (в полуфинале с «Динамо» ему сломали ключицу). Команда в итоге проиграла «Динамо» (Киев) с разгромным счётом — 1: 6.
В 1992 году, после распада СССР, был создан высший дивизион России, куда вместо команд из союзных республик вошло много новых клубов.
В один из них — «Асмарал» Гаврилова пригласил всё тот же Бесков — помочь молодой команде.
В 1993 году выступал за «Интеррос» , где помог стать лучшим бомбардиром команды Алексею Снигирёву.Гаврилов постоянно продлевал свою карьеру футболиста — уже будучи тренером, он иногда выпускал себя на поле на замену и доиграл до 43-летнего возраста. Часто играл за ветеранов «Спартака» и сборной СССР.