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 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 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'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.
Eduardo Vargas and Sofiane Feghouli, both second-half replacements, scored in the 80th and 90th minutes respectively to put the Spanish side in charge of the tie.
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.
Alessandro Matri put the Serie A side ahead after only eight minutes and, even though Martin Pusic levelled two minutes later, Josip Ilicic made it 2-1 to the Italians after 15 minutes.
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.
Shakhtar Donetsk will 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 Aleksandr Prudnikov's sending-off after only 28 minutes.
By that time Betis already led through Didac Vila, but Roman Eremenko equalised with a 74th-minute penalty.
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 10 men following the 89th-minute red card for Ilya Maksimov.