Spartak Moscow snatched the Russian Premier League's second Champions League place in a dramatic final day on Sunday, beating Lokomotiv Moscow 2-0 to leapfrog CSKA Moscow into second.
CSKA led Spartak by a single point going into the last round of matches, but lost 3-1 at Rubin Kazan to drop a place to third and will enter next season's Europa League.
They will be joined by fourth-placed Dynamo Moscow, who drew 1-1 at FC Kuban, and Anzhi Makhachkala, who lost 2-0 at home to champions Zenit St. Petersburg. Rubin enter the competition also as Russian Cup winners.
Zenit won the title last month with three games to spare.
It is Spartak's best finish since 2009, when they were runners up to Rubin.
Spartak opened the scoring on 20 minutes as Marek Suchy flicked a near-post header over Alexander Filtsov in the Lokomotiv goal from an Aiden McGeady corner.
McGeady then provided the cross for Artem Dzyuba to double the lead five minutes before half time.
Lokomotiv never gathered any serious steam, restricted to long-range efforts and crowded out in front of goal.
Winger Diniyar Bilyaletdinov curled an early effort at goal that was palmed away.
Dmitry Sychev, getting a rare start in attack, volleyed over as Lokomotiv sought to respond to Suchy's opener immediately.
Spartak's Sergei Bryzgalov swung and missed from point-blank range off a dangerous McGeady free kick on the half hour, before Kirill Kombarov blasted over from the resulting corner.
Bilyaletdinov then fought his way past several defenders before his shot ricocheted to safety.
Sychev scuffed a shot straight into the onrushing Artem Rebrov soon after.
Denis Glushakov skied an effort after good work down the left by Nigerian forward Viktor Obinna.
In the second half, Dzyuba fended off three Lokomotiv defenders and laid the ball off for Brazilian striker Ari, who chipped straight into Filtsov's grateful arms.
McGeady couldn't quite stretch to a cross from the left moments later.
At the other end, Roman Shishkin powered an effort just over as the hosts searched for a way back.
Lokomotiv's Bosnian midfielder Senijad Ibricic squeezed a header through to the far post but Rebrov saw the danger away.
Obinna then span and volleyed in the area but could only send the ball over the Spartak crossbar from eight yards.
A Dmitry Loskov free kick deflected off the wall and just wide as the clocked ticked down, and Bilyaletdinov lifted a late effort over.
In other games, Terek Grozny and Krylya Sovetov played out a 1-1 draw; Amkar Perm beat FC Volga 4-1, while relegated FC Tomsk bowed out with a 2-1 home against FC Rostov and bottom club Spartak Nalchik drew 3-3 with FC Krasnodar.