CSKA Moscow beat Lokomotiv Moscow 1-0 to retain their title on a pulsating final day in the Russian Premier League.
The city rivals came into Thursday's fixtures each in with a chance of securing the crown - while Zenit travelled to Kuban Krasnodar also hoping to win the league.
CSKA entered the round top of the league on 61 points, with Zenit on 60 in second and third-placed Lokomotiv a further point back.
Zenit were comfortable 4-1 winners, but Zoran Tosic grabbed CSKA's crucial goal as they secured their 12th national title.
Andre-Villas Boas' side came into the game under a cloud after Sunday's encounter with Dinamo Moscow had to be abandoned due to a violent pitch invasion.
But they seized the advantage at Kuban Stadium and were temporarily top when Danny slipped Axel Witsel clear on goal for a 15th-minute opener.
Goalkeeper Vyacheslav Malafeev was forced off with injury soon after and replaced by Yuri Lodygin to keep Zenit nerves jangling.
Meanwhile in Moscow, CSKA defender Vasili Berezutski headed wide from a free-kick as the hosts at Arena Khimki went in search of a precious goal.
Zenit were two up at the break and cruising, Salomon Rondon heading home to double the advantage from Domenico Criscito's cross and a nervy CSKA display saw them go in at half-time goalless - leaving the St Petersburg club 45 minutes away from glory.
However, Leonid Slutsky's team talk revived his side and they finally went ahead in the first minute of the second period.
Tosic pounced on a loose pass in the Lokomotiv midfield before surging forward and drilling a low effort in from 20 yards.
News eventually reached Kuban as Zenit fans watched on deflated, but Oleg Shatov's volley to make it 3-1 cheered them somewhat.
Lorenzo Melgarejo grabbed a consolation for Kuban while, almost exactly at the same time in Moscow, Alan Dzagoev went agonisingly close to sealing CSKA's triumph.
It almost proved costly as Lokomotiv substitute Dame N'Doye hit the post but Slutsky's men held on - Hulk's fourth for Zenit coming after the final whistle in Moscow had blown and counting for nothing.
Elsewhere on the final day, Krasnodar secured UEFA Europa League football for the first time thanks to a 2-2 draw at Amkar Perm.
They will be joined by Lokomotiv and Dinamo Moscow, who lost 3-2 to city rivals Spartak - denied their own top-five spot due to an inferior head-to-head record with Krasnodar.
Matters at the bottom of the table had been decided ahead of the final day. Relegated pair Volga and Anzhi ended their miserable campaigns with home defeats to Ural and Krylya Sovetov respectively.
Krylya's win will boost their confidence heading into the relegation play-offs, and Tom Tomsk also grabbed a win ahead of their own participation - beating Rostov 3-2.
Elsewhere, Rubin Kazan and Terek Grozny rounded off their campaigns with a 1-1 draw.
|Coach: L. Slutsky|
for A. Dzagoev 80'
for S. Doumbia 90+2'
|Scotland call up debutants Gauld and May|
|Ramsey out for up to four weeks|
|Giroud deal done - Wenger|
|Hull City challenge FA over name change ruling|
|Rooney impressed with McNair|
|Luiz: I nearly joined Barca|
|Persipura 0 Al Qadsia 6 (agg 2-10): Visitors coast into final|
|Blanc wary of ´exceptional´ Messi|
|Dawson extends Albion deal|
|Mourinho open to move within Premier League|
|Top four the priority - Van Persie|
|Liga MX Preview: Queretaro braced for Atlas challenge|
|Copa Sudamericana Preview: Sao Paulo out to arrest slump|
|MLS Preview: DC United ready to grind, Revolution host Crew|
|Argentine Primera Division Review: Newell´s unbeaten run ends|
|Mignolet shrugs Valdes, Liverpool link|
|Neville blames transfers for Newcastle form|
|Mathieu applauds Messi, Neymar partnership|
|Mignolet must improve - Carragher|
|Cole hails Lampard|
|Villa may miss opener in Australia|
|Hughes thrilled with ´deserved´ home win|
|Pardew fears for future|
|Serie A Review: Djordjevic treble fires Lazio to Palermo win|
|Pardew facing ´serious conversations´ with Ashley|
|Pacos de Ferreira 2 Belenenses 0: Hosts off the mark on home turf|
|Stoke City 1 Newcastle United 0: Crouch deepens gloom for visitors|
|Garcia embracing underdogs tag|
|Turkish Super Lig Review: Gekas double sinks Fenerbahce|
|Bayer Leverkusen v Benfica: Schmidt´s men seek goalscoring touch|
|Costa to start against Sporting|
|Russian Premier League Review: CSKA edge Ural thriller to close gap on Zenit|
|Ludogorets v Real Madrid: Holders out to avoid slip-up in Sofia|
|Malmo v Olympiacos: Roberto insists no hangover for visitors|
|Championship Preview: McKinlay in at Watford, Norwich host unbeaten Charlton|
|Luis Enrique expecting stern PSG test|
|Atletico Madrid v Juventus: Opening defeat puts pressure on hosts|
|Bruce staying positive despite winless run|
|Police investigating Van Dijk racism claims|
|Hazard dreaming of Champions League glory|
|Santos goes to Goa|
|Double delight for Al-Garni|
|Basel v Liverpool: Rodgers hopeful on Sturridge return|
|Arsenal v Galatasaray: Wenger facing selection headache|
|Blanc calling on others to cover for Ibrahimovic absence|
|Zenit v Monaco: Jardim sticking with style|
|Ibrahimovic out of Barca clash|
|Lucescu happy to host Porto in Lviv|
|Hart looking to bounce back against Roma|
|McKinlay replaces Garcia at Watford|
|Anderlecht v Borussia Dortmund: Hasi expecting tough test|
|Sunderland not panicking, says Jones|
|Pelle hopes for Italy call|
|Slutsky well aware of Bayern strength|
|Guardiola entering unchartered territory|
|Arsenal have a point to prove against Chelsea - Oxlade-Chamberlain|
|Irvine hails Lescott impact|
|Carlos backs Ancelotti to defend crown|
|Montoya replaces injured Douglas|
|Pearce wants permanent Hunt deal|
|Nolan targets top 10|
|Mangala reaction pleases Kompany|
|Dyche keen to emulate West Brom example|
|Irvine happy to see Hawthorns rocking again|
|San Siro ´isn´t enough anymore´ for Milan|
|Redknapp calls for temporary subs|
|Western Sydney Wanderers v Seoul: A-League side look to continue dream run|
|Hazard rules out PSG switch|
|MLS Review: Keane scores twice in Galaxy romp|
|Costa Rican Primera Division Review: Five-star Alajuelense extend streak|
|Colombian Primera A Review: Medellin held, Santa Fe go top|
|Liga del Futbol Profesional Boliviano Review: Wilstermann remain top|
|Napoli rewarded for team effort - Benitez|
|Liga MX Review: Layun scores four, Monterrey leapfrog Atlas|
|Paraguayan Division Profesional Review: 15-year-old Diaz is Cerro´s hero|
|Uruguayan Primera Division Review: Racing leave it late, Recoba scores from a corner|
|Brazilian Serie A Review: Gremio´s resurgence continues|
|Venezuelan Primera Division Review: Leaders held, Tucanes win again|
|Referee got it right - Rooney|
|Peruvian Primera Division Review: Melgar stay perfect|
|Bielsa: Marseille always in control|
|Newcastle will offer Tiote new deal - Pardew|
|Shakhtar Donetsk v Porto: Lucescu looks to maintain impressive home record|
|Ligue 1 Review: Marseille, Bordeaux continue fine starts|
|Serie A review: Inter stunned, Sampdoria derby delight|
|APOEL v Ajax: De Boer hoping to end poor away form|
|Schalke v Maribor: Draxler set for return for confident hosts|
|Al Ahly 2 Coton Sport 1 (agg 3-1): Hosts secure historic final berth|
|Sporting Lisbon v Chelsea: Hosts protecting fearsome home record|
|CSKA Moscow v Bayern Munich: Robben calls for psychological focus|
|Primeira Liga Review: Gil Vicente´s misery continues|
|Bundesliga Review: Late Piazon strike stuns Hamburg, Augsburg edge out Hertha|
|Dyche wants Burnley to bounce straight back|
|Hard work paying off for West Brom - Irvine|
|Paris Saint-Germain v Barcelona: Blanc hopeful of Ibrahimovic return|
|Eredivisie Review: PSV lose at Heerenveen, Twente win|
|TP Mazembe 3 ES Setif 2 (agg 4-4): Away goals secure final berth for Algerians|
|West Brom 4 Burnley 0: Berahino shines in routine win|
|Mazzarri accepts blame for Cagliari humbling|
|Inzaghi frustrated with Milan draw|
|Manchester City v Roma: Zabaleta ready for crucial clash|
|CSL Review: Evergrande take dramatic Guangzhou derby|
|Cesena 1 Milan 1: Rami rescues point for Inzaghi´s men|
|Inter 1 Cagliari 4: Ekdal hat-trick inspires sensational away win|
|Reading 3 Wolves 3: Late Murray leveller earns draw|
|BATE v Athletic Bilbao: La Liga side look to kick-start season|
|Luiz needs time - Blanc|
|Every day is difficult - Guardiola|
|Martinez hails Hibbert and Browning|
|Lallana getting fitter - Rodgers|
|My best is yet to come - Rooney|
|K.League Review: Pohang snatch draw against leaders, Busan I´Park claim much-needed win|
|Chadli revels in derby goal|
|Al Ain v Al Hilal: Uphill battle for Dalic´s men|
|Koeman praises Mane and Bertrand|
|Costa needs 15 days to recover - Mourinho|
|Serie A not a two-horse race - Tevez|
|MLS Review: Seattle go top, Toronto fight back to win|
|Atletico were simply better - Emery|
|Gerrard: I´m not finished yet|
|Persipura v Al Qadsia: Visitors set to reach final|
|Kitchee v Erbil: Belencoso key for hosts|
|Ecuadorian Primera A Review: Barcelona continue good form|
|Sakho sorry for pre-game departure|
|Berahino ´lost´ after Clarke exit|
|La Liga Review: Big guns win|
|Home fans key to Atletico success - Simeone|
|Primeira Liga Review: Benfica win thriller, Braga beat Rio Ave|