Воспитанник школы московского «Динамо», в которую его привёл отец в 6 лет, тренировался в одной группе с братьями Михаилом и Владимиром Бесчастных. Первый тренер Владимир Смирнов определил невысокому мальчишке место защитника на поле, долго работая над ним. Выступал за юношескую сборную Москвы. Играл за «Динамо-2» и «Динамо»-д, в составе «Динамо»-д два раза побеждал в зональном турнире третьей лиги (1996, 1997), был бронзовым призёром второго дивизиона в зоне «Запад» (1998). В 1998 году дебютировал в высшем дивизионе. В 1999 году перешёл в «Уралан», который выкупил его трансфер. Сыграл 28 матчей в высшем дивизионе. У Козлова было много предложений, однако выбор пал на родное «Динамо», которое его выкупило за те же деньги, что и продавало. В 2000 году главный тренер «Динамо» Валерий Газзаев порекомендовал Олегу Романцеву и он был приглашён на сбор в национальную сборную страны. В конце того сезона Козлов получил травму, полтора года лечился и был вынужден покинуть «Динамо». Пробовал свои силы в «Шиннике», который тренировал Александр Побегалов, однако травма дала о себе знать. В 2002 году перешёл в «Кузбасс-Динамо» Кемерово, которое тренировал Николай Агафонов, в 2003 году он звал Козлова в «Урал», однако тот решил перебраться в подмосковные «Химки», поближе к дому. Далее играл за «Томь», «Анжи», «Содовик», «Салют-Энергия», завершил карьеру в 2008 году в клубе «МВД России».