В 2004 году Регламент Чемпионата России не изменился.
Столичные Локомотив и Спартак открывали сезон в конце февраля. 24-го Локомотив дома победил Монако в первом матче 1/8 финала Лиги чемпионов со счетом 2:1. Спартак через 2 дня в Кубке УЕФА дома проиграл Мальорке 0:3. Через неделю спартаковцы хоть и взяли реванш 1:0 на чужом поле, но турнир покинули. Локомотив проводил ответный матч через 2 недели. Поражение 0:1 не позволило железнодорожникам продолжить борьбу, хоть они и были близки к этому. Монако в итоге дойдет до финала затем.
28 февраля Локомотив победил в Кубке России ФК Химки 1:0 и вышел в 1/8 финала. Все остальные участники этого раунда были определены еще прошедшей осенью, а Ротор и ФК Ростов тогда же завоевали путевки в четвертьфинал.
Перед стартом чемпионата в ¼ финала кубка добились право выступить Крылья Советов и Торпедо-Металлург, а еще три пары провели первые матчи 1/8 финала.
Матчи первого тура чемпионата прошли 12-13 марта, только Локомотив с Шинником играли 15-го. Торпедо на выезде со счетом 4:0 победило ФК Ростов, также крупную победу одержал и Локомотив (3:0).
17 марта Терек со счетом 3:0 победил Кубань на ее поле в первом матче 1/8 финала кубка.
19-21 марта прошли матчи второго тура. Ни одной из команд в обоих стартовых турах не удалось одержать победы. По 4 очка в активе имели Торпедо, Локомотив, Зенит и Кубань.
23 и 24 марта были определены еще четыре четвертьфиналиста кубка.
27 и 28 марта команды провели матчи третьего тура. Половина завершилась ничейным итогом. В итоге у шестерки лидеров было по 5 очков. Разрыв в очках между первой и последней командами составил 3 очка.
3 апреля прошли все матчи четвертого тура. Ничейная эпидемия никуда не пропала. Снова в четырех матчах победитель не был выявлен. Торпедо, Амкар и Спартак одержали победы и набрали по 8 очков. Также ФК Москва выиграла у Крыльев Советов, но для столичной команды это была первая победа.
Матчи пятого тура состоялись 7 апреля. Спартак победил Шинник и возглавил таблицу единолично.
В шестом туре Спартак проиграл Торпедо и позволил автозаводцам обойти себя. Также 12 очков после 6 матчей стало у Зенита, победившего на выезде Амкар. Ни одной победы не смогли пока одержать на старте Рубин и ФК Ростов.
14 апреля прошли первые четвертьфинальные матчи. Шинник, Ротор и Крылья Советов победили дома Локомотив, Терек и ЦСКА. Торпедо-Металлург на выезде был гораздо сильнее ФК Ростов.
В седьмом туре очередные победы смогли одержать лидировавшие Торпедо, Зенит и Спартак. Кроме этого. Локомотив в дерби победил ЦСКА, а ФК Ростов крупно обыграл дома Ротор и обошел его в таблице.
Ответные матчи ¼ финала прошли 21 апреля. Локомотив победил Шинник 4:1, но поражение в первом матче 0:3 не позволило столичной команде выйти в полуфинал. Терек победил Ротор 3:0 и прошел дальше, так как в пером матче волгоградцы победили 2:0. Крылья Советов снова победили ЦСКА, а в паре Торпедо-Металлург и ФК Ростов все было ясно еще за неделю до этого, и матч в Москве завершился нулевой ничьей.
Матчи восьмого тура прошли 24 и 25 апреля. Торпедо обыграло Зенит и теперь лидировало единолично. Спартак проиграл Рубину на его поле. Это была первая победа казанцев в чемпионате. Локомотив поделил очки с Ротором на его поле. ЦСКА смог обыграть минимально Аланию.
В девятом туре Торпедо оказалось сильнее Рубина и удержало за собой лидерство. Группу преследователей образовали Зенит, Локомотив и ЦСКА. Питерцы крупно победили Спартак на его поле, Локомотив взял 3 очка в Ростове-на-Дону, а ЦСКА – в Волгограде.
5 мая в первых полуфинальных поединках были зафиксированы ничьи.
8 и 9 мая состоялись матчи десятого тура. Торпедо уступило в Перми, что позволило Зениту, победившему дома Динамо, сравняться по очкам с лидером. Победы в своих матчах одержали Локомотив и ЦСКА, серьезно подперев в таблице первую парочку. На пятое место после победы над Спартаком 4:2 с 15 очками вышли Крылья Советов.
12 мая в ответных полуфинальных матчах победы одержали Крылья Советов дома над Торпедо-Металлург, а Терек в гостях над Шинником.
15 и 16 мая прошли матчи 11-го тура. Из команд первой четверки победили все кроме Зенита. Питерская команда проиграла дома самарцам и оказалась теперь на четвертой позиции.
Матчи 12-го тура состоялись уже 19 мая. Локомотив дома проиграл Зениту, ЦСКА на своем поле довольствовался мирным итогом в матче с Шинником. Торпедо победило ФК Москва и упрочило свое лидерство. ФК Ростов победил дома Спартак и покинул зону вылета, в которой уже серьезно обосновался Ротор.
22 и 23 мая прошли матчи 13-го тура. После этого команды ушли на каникулы в связи с проведением в июне чемпионата Европы. Торпедо одержало очередную победу, на этот раз над Ротором. Крылья Советов победили дома Локомотив и сравнялись с ним по очкам. Зенит праздновал победу в матче с Кубанью. ФК Ростов взял 3 очка в гостевом поединке с Динамо.
29 мая в финальном матче Кубка встретились Крылья Советов и Терек. Со счетом 1:0 победу праздновала команда из Грозного, выступавшая весь год в Первом дивизионе.
На чемпионате Европы сборная России 12 июня проиграла сборной Испании 0:1, а затем 16 июня и хозяевам – португальцам - 0:2. Победа 2:1 20 июня над будущими чемпионами – греками - несколько скрасила неудачный итог выступления команды, особенно когда прошел финальный матч турнира.
19 и 26 июня Спартак открыл евросезон. В матчах 1-го раунда Кубка Интертото москвичи сошлись с Атлантасом из Клайпеды. Победа дома 2:0 и поражение 0:1 на выезде, но проход дальше.
3 июля первенство страны было возобновлено. Но не все сразу команды смогли это сделать. 2 матча было перенесено, так как Спартак и Шинник снова проводили матчи в Кубке Интертото. Торпедо сыграло вничью с ЦСКА, а Зенит проиграл ФК Ростов. Крылья Советов победили в гостевом поединке Аланию и поднялись на третью строчку таблицы.
7 июля прошли матчи 15-го тура. Торпедо дома уступило Сатурну, Зенит на своем поле победил Аланию, Крылья Советов также дома были сильнее ФК Ростов. Кубань хоть и свела вничью гостевой поединок со Спартаком, но так и не смогла покинуть опасную зону по итогам первого круга.
3 и 10 июля Спартак и Шинник провели матчи 2-го раунда Кубка Интертото. Москвичи дважды победили Камен-Инград из Хорватии, а Шинник в обоих матчах был сильнее чешской Теплице.
10 и 11 июля команды начали второй круг. Снова были перенесены два матча, но не так далеко. Один из них прошел уже 14-го, а второй – ровно через неделю. Торпедо и Зенит в гостевых матчах победили аутсайдеров – Ротор и Кубань. Локомотив взял реванш у Крыльев и сравнялся с ними по очкам. ЦСКА крупно победил Амкар и также набрал 28 очков.
В 17-м туре (17-18 июля) снова было перенесено две игры. Локомотив победил Зенит на его поле, а ЦСКА в дерби оказался сильнее Торпедо. Ситуация в стане лидеров после этого стала очень напряженной.
18-й тур тоже был сыгран без двух матчей, с 23 по 25 июля. ЦСКА и Локомотив дома победили Рубин и Динамо, а Крылья Советов и Зенит на выезде – ФК Ростов и Аланию. Торпедо в раменском поделило очки с Сатурном и передало Зениту лидерские полномочия.
17 и 24 июля Спартак и Шинник сыграли матчи в Кубке Интертото. Обе команды не прошли далее. Москвичи проиграли испанскому Вильярреалу на его поле, а дома сыграли вничью, а ярославцы сначала дома, а затем и в гостях уступили португальской Лейрии.
С 28 июля по 7 августа состоялось 4 перенесенных матча, в трех из них играл Спартак. Ему удалось победить дома ФК Ростов, а затем на выезде Кубань. В дерби с Локомотивом на его поле забитых голов болельщики не увидели.
28 июля ЦСКА во 2-м квалификационном раунде Лиги чемпионов сыграл вничью 0:0 с Нефтчи в Баку. Ответный матч прошел 4 августа, армейцы победили в нем 2:0.
31 июля и 1 августа прошли первые матчи 1/16 финала кубка. Ответные были сыграны с 7 августа по 20 ноября, но 12 из 16 в период до 10 августа. Все встречи 1/8 финала были запланированы на начало марта 2005 года.
10 августа ЦСКА продолжил борьбу за попадание в групповой турнир Лиги чемпионов. В первом матче дома столичная команда победила Глазго Рейнджерс 2:1. 24 августа в ответном ничья 1:1, и пусть в основной турнир был открыт.
Зенит, Рубин и Терек играли во 2-м квалификационном раунде Кубка УЕФА. Команда из Грозного дважды со счетом 1:0 победила польский Лех. Зенит проиграл в первом матче австрийскому Суперфунду 1:3, но ответном победил дома 2:0 и прошел дальше. Рубин играл с венским Рапидом. В гостях одержал победу 2:0, но в ответной игре дома проиграл 0:3.
С 14 по 16 августа прошли матчи 19-го тура. На этот раз все восемь. Локомотив победил Спартак на его поле, а ЦСКА проиграл Шиннику в гостях. Торпедо и ФК Москва победителя не выявили, Зенит дома уступил ФК Ростов. Локомотив стал лидером чемпионата, а на второе место вышли самарцы, победившие крупно на своем поле Аланию.
Матчи 20-го тура прошли с 20 по 22 августа. ЦСКА победил крупно Ротор. Локомотив дома принимал ФК Ростов и завершил матч ничейным итогом. Этим воспользовались Крылья Советов, победившие динамовцев и возглавившие турнирную таблицу. На второй позиции оказался Зенит, победивший Спартак.
28-30 августа прошли матчи 21-го тура. Спартак победил дома лидировавшие Крылья Советов. Локомотив проиграл Кубани на ее поле. ЦСКА в Раменском победил Сатурн. Зенит на выезде победил Динамо и возглавил турнирную таблицу.
4 сентября сборная России провела первый отборочный матч к чемпионату Мира 2006 года. На своем поле наша команда не смогла победить сборную Словакии, не забив пенальти при счете 1:0 в середине 2-го тайма и пропусти в самой концовке матча.
10-12 матча были проведены матчи 22-го тура. Зенит в Самаре победил Крылья Советов. ЦСКА в дерби оказался сильнее Спартака. Локомотив разгромил Аланию, Торпедо минимально обыграло Амкар. Ротор хоть и победил Сатурн, но шансов на спасение у команды из Волгограда уже почти не осталось.
14 сентября ЦСКА в первом туре Лиги чемпионов сыграл вничью с Порту на его поле. Терек и Зенит 16 сентября провели на своих полях матчи 3-го квалификационного раунда Кубка УЕФА. Питерцы разгромили белградскую Црвену Звезду 4:0, а грозненские футболисты сыграли вничью со швейцарским Базелем 1:1.
Матчи 23-го тура прошли с 18 по 20 сентября. Крылья Советов дома проиграли Шиннику. ЦСКА в гостях разгромил Аланию. Зенит победил Торпедо, а Локомотив дома неожиданно уступил Ротору.
Через неделю состоялись игры 24-го тура. ЦСКА дома проиграл Локомотиву, а Зенит на выезде – Шиннику. Крылья Советов победили Торпедо в столице. Ротор одержал третью кряду победу, на этот раз дома над ФК Ростов. Ситуация для волжан начала выглядеть уже поправимой.
29 сентября во втором туре Лиги чемпионов ЦСКА дома победил Пари-Сен-Жермен 2:0. 30 сентября в Кубке УЕФА Зенит снова победил Црвену Звезду и прошел в групповой этап. Терек уступил Базелю и на этом закончил выступление.
В 25-м туре (2-4 октября) Зенит сыграл вничью дома вничью 0:0 с Амкаром. Это позволило армейцам, победившим в Краснодаре, сравняться с питерской командой. Локомотив победил Сатурн и стал в шаге от лидеров. Крылья Советов обыграли Рубин, и тоже были не далеко от вершины таблицы. Ротор сыграл вничью во Владикавказе. Еще очко, но не более того.
Сборная России 9 октября победила в Люксембурге 4:0, а 13-го потерпела сокрушительное поражение 1:7 в Португалии.
16 и 17 октября состоялись матчи 26-го тура. ЦСКА победил ФК Ростов, а Локомотив был сильнее ФК Москва. Зенит сыграл вничью в Казани и опустился на третью строку таблицы. Ротор и Кубань в Волгограде не выявили победителя. Торпедо победило Динамо, а Крылья проиграли в Перми.
ЦСКА в 3-м туре Лиги чемпионов проиграл Челси на его поле 0:2, а Зенит в Кубке УЕФА победил АЕК 5:1.
В 27-м туре 24 октября Локомотив на своем поле сыграл вничью с Рубином 0:0, а ЦСКА на следующий день разгромил Зенит на его поле и значительно упрочил свое лидерство на финише.
Матчи 28-го тура прошли 29-31 октября. ЦСКА сыграл вничью с Крыльями Советов на своем поле. Локомотив победил Амкар в гостях. Одержали победы в своих матчах также Зенит и Торпедо. Ротор и Кубань за 2 тура до финиша имели на 4 очка меньше, чем ФК Ростов, находившийся на 14-м месте, и на 5 меньше, чем Динамо и Амкар.
2 ноября ЦСКА в Лиге чемпионов снова проиграл Челси, теперь в Москве. Зенит 4 ноября в Кубке УЕФА проиграл французскому Лиллю на его поле 1:2.
8 ноября в 29-м туре ЦСКА и Динамо завершили свой матч нулевой ничьей. В другом дерби Локомотив победил Торпедо и вышел на первое место. Крылья Советов победили Ротор и отправили его в Первый дивизион. Ростов смог обыграть Рубин и избежал вылета. Кубань победила Шинник, но уже висела на волоске, так как могло догнать только Динамо в последнем туре.
Матчи завершающего тура прошли 12 ноября. Локомотив в Ярославле победил Шинник и стал двукратным чемпионом России. ЦСКА досталось серебро. Крылья Советов победили в Раменском и забрали бронзу. Зенит не смог попасть в тройку призеров, став четвертым. Динамо сыграло вничью со Спартаком, отправив Кубань в Первый дивизион.
17 ноября сборная России со счетом 4:0 на своем поле победила сборную Эстонии.
24 ноября ЦСКА в Лиге чемпионов дома проиграл Порту 0:1. Зенит дома 25 ноября сыграл вничью с испанской Севильей.
Зенит 2 декабря сыграл вничью с немецкой Алеманией и завершил выступление в Европе.
7 декабря ЦСКА победил ПСЖ на его поле 3:1 и теперь весной готовился играть в Кубке УЕФА.
Статистика матчей чемпионата в номинации «хозяева - гости»: