Fernando Alonso has become the first Spanish driver to win his country's Grand Prix, delighting the 130,000-strong crowd in Barcelona.
The reigning world champion dominated the race from the start, beating Michael Schumacher into second place. Giancarlo Fisichella took third.
Schumacher had won the last two races, but came in 18 seconds behind Alonso.
Alonso now has 54 points in the championship - with nearest rival Schumacher 15 points behind him.
It was the 24-year-old's 11th career victory and his third this season.
The best British showing was from Jenson Button, who finished sixth.