В 1997 году закончил карьеру игрока и начал судить. В 2000 году допущен к играм Второго дивизиона, в 2001 году — к играм Первого дивизиона, с 2003 года судит игры Российской Премьер-Лиги. Примечательно, что его дебют как судьи в главной лиге страны состоялся как раз в матче с участием его бывшего клуба — самарских «Крыльев Советов», которые принимали на своём поле 25 мая 2003 года «Спартак-Аланию». В 2005 году стал арбитром ФИФА.
Одним из самых запоминающихся моментов в судейской карьере Захарова является потасовка с участием Сергея Овчинникова в матче «Москва» — «Динамо» (Москва), прошедшем 25 июля 2006 года. Тогда вспыльчивый вратарь динамовцев, используя нецензурную лексику и распуская руки, пытался доказать то, что мяч в игру надо вводить не с углового, а от ворот, за что заработал длительную дисквалификацию, после чего завершил карьеру. Зрителям особенно запомнился тот момент, когда Сергей Иванович взял Захарова «за грудки».
12 мая 2007 года, после матча 9-го тура Премьер-Лиги между ЦСКА и московским «Спартаком», в котором Захаров показал армейцам 2 жёлтых карточки, а спартаковцам — 5, при этом не засчитав чистый гол армейца Жо, его судейство подверг резкой критике капитан «Спартака» — Егор Титов:
Кроме этого, Захаров показал желтую карточку собаке, выбежавшей на поле.
27 июля 2008 года после матча 15-го тура Чемпионата России между «Шинником» и «Тереком» (1:1) ярославцы добивались проведения медицинского освидетельствования судьи, подозревая его в нахождении в состоянии алкогольного опьянения, однако Захаров отказался проходить освидетельствование, мотивируя это отсутствием документации на аппаратуру и не желанием медицинских работников выдать вторую пробу для отправки ее на экспертизу в Москву .
Был признан лучшим российским футбольным арбитром 2008 года по версии газеты «Спорт-Экспресс». В начале 2009 года принял решение о завершении судейской карьеры из-за проблем со спиной.