Luiz Felipe Scolari's side lost for the first time in over six months thanks to a Dani Alves own goal, while Premier League duo Alvaro Negredo and Santi Cazorla netted for La Roja
Luiz Felipe Scolari's side had gone 11 games without defeat but lost for the first time in over six months to a determined Switzerland team.
Alves inexplicably headed into his own net, beyond goalkeeper Jefferson, in the 48th minute and it was a lead Switzerland did not surrender.
Germany were quickly two goals down against Paraguay, but recovered to claim a draw in Kaiserslautern.
The South Americans stormed into a 2-0 lead in the first 15 minutes courtesy of Jose Ariel Nunez and Wilson Pittoni strikes.
Ilkay Gundogan and Thomas Mueller restored parity but Miguel Samudio put Paraguay back in front in first-half injury time.
It looked like Joachim Low's side were heading for defeat until Lars Bender spared Germany's blushes with a 75th-minute leveller.
Goals in either half from Alvaro Negredo and Santi Cazorla helped Spain notch a professional 2-0 win in Ecuador.
On an emotional occasion for the hosts, who paid their respects to Christian Benitez after the striker died of heart failure last month, they were outplayed by a Spain outfit missing the likes of Xavi, Juan Mata and Fernando Torres.
Negredo scored a stunning back-heel flick in the 25th minute before Cazorla – who made the most of a rare start – sealed the win in the second half.
There was disappointment for Cesare Prandelli as his Italy side suffered a 2-1 defeat to Argentina in Rome.
Gonzalo Higuain opened the scoring in the first half when he controlled Erik Lamela's pass to fire beyond Gianluigi Buffon.
Substitute Ever Banega drilled in the second for Argentina before Lorenzo Insigne curled in a consolation with 15 minutes of play left.
A debut goal from Southampton striker Rickie Lambert handed England a 3-2 win against rivals Scotland at Wembley.
James Morrison and Kenny Miller had twice put the away side ahead, only for their goals to be cancelled out by Theo Walcott and Danny Welbeck.
And with 20 minutes remaining, Lambert headed home to give Roy Hodgson's side victory.
A late Cristiano Ronaldo equaliser secured Portugal a 1-1 draw against the Netherlands, with the Real Madrid star netting with just three minutes to play.
Roma's Kevin Strootman gave Netherlands the lead after 17 minutes.
Elsewhere, Belgium and Wales were held to 0-0 draws by France and the Republic of Ireland respectively.
Macedonia, Ukraine and Finland posted 2-0 home wins over Bulgaria, Israel and Slovenia respectively, while Greece and Nigeria also won by the same scoreline on the road, against Austria and South Africa.
Zlatan Ibrahimovic scored a hat-trick as Sweden defeated Norway 4-2, while Jozy Altidore also netted a treble as the United States came from behind to defeat Bosnia and Herzegovina 4-3.
Romania and Hungary were held to 1-1 draws by Slovakia and the Czech Republic, and matches between Belarus and Montenegro, Estonia and Latvia and Moldova and Andorra ended in the same scoreline.
Other results saw Chile thrash Iraq 6-0, Uruguay beat Japan 4-2, while Albania and Indonesia won 2-0 against Armenia and the Philippines respectively.
Egypt, Tajikistan and Azerbaijan won 3-0 against Uganda, India and Malta respectively, Poland beat Denmark 3-2, and Croatia defeated Liechtenstein by the same scoreline.
Turkey drew 2-2 with Ghana, South Korea played out a goalless draw against Peru, Tunisia beat Congo 3-0 and Burkina Faso upset Morocco 2-1.
Senegal and Zambia drew 1-1, as did Gabon and Cape Verde, and Colombia, Iceland and Kazakhstan beat Serbia, Faroe Islands and Georgia by 1-0 scorelines.
Malawi also won 1-0, against Rwanda, while Libya and the Central African Republic finished 0-0.