Jonathan Soriano scored with a spectacular chip from the halfway line as Salzburg stunned Ajax 3-0 in the first leg of their last 32 UEFA Europa League tie in Amsterdam.
Soriano scored twice, the first with a 14th-minute penalty and the second, after 35 minutes, with a glorious long-range effort which caught Ajax goalkeeper Jasper Cillessen off his line.
Sadio Mane was on target in between times to leave the Austrians with one foot in the last 16.
Lazio also suffered a shock home defeat, doing down 1-0 to Ludogorets of Bulgaria.
Roman Bezjak scored the winner on the stroke of half-time to decide a match in which both teams missed penalties and both had a man sent off.
The visitors missed from the spot in the eighth minute through Svetoslav Dyakov, and Felipe Anderson wasted the chance to level for Lazio five minutes into the second half.
Dyakov was then sent off five minutes later, but the numbers were evened up when Luis Cavanda was dismissed in the 73rd minute.
Eintracht Frankfurt came from two goals down to draw 2-2 at Porto.
A goal either side of half-time from Ricardo Quaresma and Silvestre Varela had the Portuguese side in control, but Joselu pulled one back in the 72nd minute before Alex Sandro's own goal six minutes later earned the Germans a second away goal and a draw.
Valencia down Dynamo
Valencia's substitutes made the difference with two late goals to earn a 2-0 victory in the away leg of their tie with Dynamo Kiev.
The match was played in Nicosia, Cyprus, because of the ongoing violent clashes in the Ukrainian capital and it was the designated visitors who adapted better, squandering chances to take the lead before finally making the breakthrough.
Fiorentina also established a commanding first-leg lead thanks to a 3-1 success at Esbjerg.
Alberto Aquilani added a third from the penalty spot before the break to leave La Viola on the verge of the last 16.
Another Italian side Juventus won their home leg against Trabzonspor 2-0.
Dani Osvaldo opened the scoring with his first goal for the club after 15 minutes and Paul Pogba doubled their advantage deep into stoppage time.
Sevilla had to settle for a 2-2 draw at Maribor after coming from behind to lead 2-1.
Marcos Tavares put the Slovenians in front, but second-half efforts from Kevin Gameiro and Federico Fazio turned the match around.
Substitute Dare Vrsic levelled for the hosts in the 81st minute to give them hope ahead of the second leg.
Fellow Ukrainians Shakhtar Donetsk will also fancy their chances of progressing after a 1-1 draw away to Viktoria Plzen.
Stanislav Tecl put the Czechs ahead after 62 minutes, but Luiz Adriano equalised four minutes later.
Ten-man Rubin Kazan earned a 1-1 draw away to Real Betis, despite Alexander Prudnikov's sending-off after only 28 minutes.
By that time Betis already led through Didac Vila, but Roman Eremenko equalised with a penalty in the 74th minute.
Benfica were 1-0 winners at PAOK Salonika thanks to Rodrigo Lima's second-half strike, while AZ Alkmaar won by the same scoreline at Slovan Liberec, Nick Viergever with an 89th-minute winner.
Elsewhere, the matches between Chornomorets and Lyon and Anzhi Makhachkala and Genk finished goalless, with Russians Anzhi ending their match with ten men following the 89th-minute red card for Ilya Maksimov.
The matches between Swansea City and Napoli and Maccabi Tel-Aviv and Basle also finished 0-0.