CSKA Moscow retained the Russian Premier League title with a last-day win over Lokomotiv Moscow on Thursday.
CSKA prevailed 1-0 at home to take their fifth Russian title by one point, as Zenit St Petersburg won 4-1 away to FC Kuban to finish second and qualify for the Champions League.
Lokomotiv led the title race for much of the season before their form dipped. They finished third, earning a berth in the Europa League, along with Dynamo Moscow, Krasnodar and cup winners Rostov.
Serbian winger Zoran Tosic's 47th-minute goal gave CSKA the win against Lokomotiv, completing a remarkable season for his team, who were nine points off the league lead in March.
After a quiet first half, the game came to life with Tosic's goal. He picked up a misplaced Lokomotiv pass in midfield and ran at the defence, feinting a pass to striker Seydou Doumbia before stroking the ball past goalkeeper Guilherme.
Lokomotiv striker Dame N'Doye hit the post five minutes from time. Had he scored, it would have handed the title to Zenit.
As his CSKA teammates saluted the fans after the final whistle, goalkeeper and career CSKA player Igor Akinfeev was alone, jumping for joy with a scarf thrown from the stands.
"I don't know what to say. It's just such a fairy tale," CSKA manager Leonid Slutsky said. "Thank you to the people who supported us throughout the entire season."
In Krasnodar, Zenit ended a turbulent season with a dominant win in their first game since crowd trouble forced their last match to be abandoned.
On Sunday, their fans stormed the pitch while losing 4-2 to Dynamo Moscow, forcing an abandonment. One fan attacked Dynamo defender Vladimir Granat.
Part of Zenit's punishment for that incident was a 3-0 technical defeat for the Dynamo game, a sanction that left Zenit second going into the final day.
Anzhi Makhachkala were relegated after starting the season as a title contender, and Volga Nizhny Novgorod also went down. Tom Tomsk and Krylya Sovetov Samara must contest two-leg relegation playoffs against second-tier teams.