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'
|Palestino 3 Santiago Wanderers 1: Title drought almost over for hosts|
|Copa del Rey Review: Finnbogason breaks drought in Sociedad win|
|Coupe de la Ligue Review: PSG scrape into quarters, Lille, Monaco win on penalties|
|Worcester City 1 Scunthorpe United 1 (aet, 13-14 on pens): League side narrowly avoid shock|
|Stambouli hails ´perfect´ Tottenham|
|Goals win games - Pardew|
|Bundesliga Review: Dortmund held by late equaliser, Leverkusen beat Bremen|
|PSV 4 Feyenoord 3: De Jong hat-trick helps settle thriller|
|Rodgers hails ´brilliant´ Liverpool|
|Eredivisie Preview: Leaders PSV take on struggling Eagles|
|Madoui hails second-half display|
|Championship Preview: Reading´s Clarke era begins at Watford|
|Liverpool to meet Chelsea in League Cup semi-finals|
|San Lorenzo 2 Auckland City 1: Extra time required to book Real final|
|AC Ajaccio 1 PSG 3: Late show sends holders through|
|Bournemouth 1 Liverpool 3: Sterling brace helps ease pressure|
|Tottenham 4 Newcastle United 0: Pochettino´s men march into semi-finals|
|Borussia Dortmund 2 Wolfsburg 2: Naldo denies Klopp´s strugglers|
|League Two Preview: Moore looks for fighting spirit, Accrington aim to bounce back|
|Allegri has suspension overturned|
|ES Setif 2 Western Sydney Wanderers 2 (5-4 on pens): Algerians rely on penalties to finish fifth|
|Ligue 1 Preview: Fournier not expecting to claim top spot, Marseille entertain Lille|
|Indian Super League Review: Kerala through to face Kolkata in final|
|Lasogga suffers thigh strain|
|Michael Garcia FIFA resignation notice in full|
|Bayern draw not ideal - Lucescu|
|Garcia resigns from FIFA role|
|Mainz v Bayern Munich: Bavarians on brink of more records|
|Garcia to fight two-match ban|
|Green backs Mignolet to return stronger|
|Mandzukic and Koke to lead inexperienced Atleti XI|
|Fonte apologises to fans after cup defeat|
|Metz suspend Maiga after unauthorised absence|
|Agent: Cole settled at Roma|
|Bayern duo sign new deals|
|Allegri calls for Juve focus ahead of Cagliari trip|
|Pearson accepts FA charge after fan row|
|Mourinho rules out January signings|
|Schaars set for PSV absence after knee surgery|
|Traore wants more Barca chances|
|Hamann hopes Liverpool receive cup boost|
|Lukaku wants Everton to produce Premier League best in Europe|
|La Liga Preview: Barca host Cordoba, Atletico travel to Bilbao|
|A-League Preview: Berisha crucial for Milligan-less Victory|
|Tena: Real ´by far the better team´|
|Blanc avoids Mourinho mind games, hails retiring Henry|
|Hecking convinced Dortmund remain dangerous|
|United´s Jones insists injuries are behind him|
|Henry: Managing Arsenal is my dream|
|Hard to imagine a better performance - Luis Enrique|
|Copa del Rey Review: Goals rain in Spain|
|Benatia to sit out Mainz clash|
|Koeman slams ´disrespectful´ Sheffield United|
|Barcelona 8 Huesca 1 (12-1 agg): Pedro treble sets up big win|
|Coupe de la Ligue Review: Nantes come from two down, Bastia knock out Caen|
|Penalty save was key, says Ancelotti|
|Mourinho pleased with professional approach in Derby win|
|FA Cup Review: Yeovil set up Man United clash, Tranmere to face Swansea|
|Bundesliga Review: Stuttgart move off bottom, Bayern win again|
|Sheffield United 1 Southampton 0: McNulty secures semi-final spot for third-tier side|
|Derby County 1 Chelsea 3: Premier League leaders progress|
|Cruz Azul 0 Real Madrid 4: Spanish giants cruise into final|
|Bayern Munich 2 Freiburg 0: 100 not out for Robben as champions cruise|
|Cagliari v Juventus: Barzagli unconcerned by successive draws|
|ECA and EPFL make case for May World Cup in 2022|
|Atletico Madrid v L´Hospitalet: Simeone likely to rotate|
|Serie A Preview: Morata chasing goals, Roma host Milan|
|Hartlepool appoint Moore following takeover|
|Parma appoint new president|
|Garcia handed two-match ban|
|Reading appoint Clarke to replace Adkins|
|Conte rules out resignation|
|Adebayor will not face Newcastle - Pochettino|
|Zhang seals Wolfsburg switch|
|SFA rejects Tonev appeal|
|Garcia report appeal rejected by FIFA|
|Herrera denies involvement in match-fixing|
|Thierry Henry: Moments that defined a genius|
|UEFA opens proceedings against Celtic|
|Rodgers denies talk of dressing-room rift|
|Jonas will be given a chance - Pardew|
|AFC asks Australia to increase security for Asian Cup|
|D´Ambrosio sets Inter sights on third|
|Williams wants Swansea to share goalscoring burden|
|Saudi Arabia appoint Olaroiu|
|Martinez lauds Barkley|
|Thierry Henry announces retirement|
|Rooney: United can win title|
|ES Setif v Western Sydney Wanderers: Topor-Stanley to miss fifth-place play-off|
|Beasley calls time on international career|
|Tena: We expect to face Real´s best|
|Martinez wary of Young Boys´ artificial pitch|
|Dudek: Everyone under pressure at Liverpool|
|Martinez hails ´devastating´ attack|
|Redknapp: QPR´s road woes more than bad luck|
|Defeat harsh on QPR - Redknapp|