Sydney FC won a thrilling A-League Grand final 4-2 on penalties over Melbourne Victory, sealing their first championship since 2010 after a dominant campaign.
Graham Arnold's men finished on top of the table, losing only once and leading Victory by a massive 17 points after the end of the regular season.
But Sydney were pushed all the way in the final, goalkeeper Danny Vukovic saving the decisive spot-kick from Marco Rojas to allow Milos Ninkovic to seal glory. Carl Valeri also missed for Victory, while Alex Wilkinson was the reprieved player who failed to convert for the hosts.
A fiercely competitive match – which saw 11 yellow cards handed out – ended 1-1 after 120 minutes of action.
Besart Berisha, who scored the winner against former club Brisbane Roar in the semi-finals, made it five goals in four Grand Final appearances by putting Victory ahead in the first half, but Rhyan Grant levelled for Sydney after the break.
James Troisi hit the post for Victory in extra time but the two sides could not be separated.
The shoot-out success means Sydney have now won the Grand Final on three occasions, equalling the record held by both Victory and Roar.
. ARE HYUNDAI A-LEAGUE 2017 CHAMPIONS! May 7, 2017
The win also avenges Victory's win over Sydney in the 2015 showpiece, which remains the last championship for Kevin Muscat's men.
A feisty match saw Victory threaten first when a quick free-kick caught Sydney out, but Rojas opted to cross rather than shoot from a good position, allowing the hosts to clear.
Sydney responded when Michael Zullo struck at goal, only for goalkeeper Lawrence Thomas to race out and deny him, shortly before a key clearance from defender Daniel Georgievski denied Bobo a chance to tap in at the far post.
The visitors took the lead after 20 minutes. Captain Valeri played a pass to Berisha, who turned midway inside the Sydney half and was not challenged as he raced inside the penalty area with some nifty footwork and sent a left-footed drive into the bottom corner.
Tensions boiled over for both sides after Leigh Broxham's foul on Ninkovic, referee Jarred Gillett ultimately issuing three bookings for the ensuing scuffle, with the hosts' Filip Holosko escaping with a yellow despite putting a hand to the face of James Donachie.
And tempers continued to fray for the remainder of a first half that concluded with five bookings having been issued.
After the break, Holosko fired over for Sydney from Grant's cross shortly before showing an angry reaction to being substituted, while Troisi had an ambitious long-range effort kept out by Vukovic at the other end.
Thomas denied substitute David Carney moments after as Arnold's men pressed for an equaliser, which duly arrived with 21 minutes remaining.
Sydney embarked on a sustained spell of pressure after Victory were unable to clear a corner which led to Carney's shot somehow being stopped by a combination of Thomas, the post and Berisha on the goal-line, but Grant raced to latch onto the rebound and convert.
The first additional period did not produce much goalmouth action, but Victory did create a major chance early in the second, Troisi collecting a pass from substitute Jai Ingham and crashing a strike against the post.
Sydney, meanwhile, had a penalty claim turned down when Carney was felled by Georgievski, the referee instead awarding a free-kick inches outside the box.
Carney later sliced a shot wide from the last opportunity of note, sending the match to penalties.
WE ARE CHAMPIONS!!! Ninkovic slots the ball home with the decisive penalty! May 7, 2017
Both teams scored their first spot-kicks but Wilkinson fired wide for Sydney to give Victory the advantage.
However, Muscat's men then missed two in a row, Valeri crashing his against crossbar before Rojas' strike was saved by Vukovic, allowing Ninkovic to be the hero, converting his kick to send Sydney wild.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.