Felipe Massa benefited from an exhaust problem for his Ferrari teammate Kimi Raikkonen to take victory in the French Grand Prix and move into the world championship lead.
Ferrari's advantage was such that Raikkonen was able to retain second despite slowing his pace for half the race, while Jarno Trulli held off McLaren's Heikki Kovalainen to claim third and take Toyota's first podium finish since Melbourne 2006.
Lewis Hamilton was hit with a second penalty when he was awarded a drive-through for cutting the Nurburgring chicane while passing Sebastian Vettel on the first lap. The McLaren driver was only able to recover to 10th.
Raikkonen had looked set for a comfortable victory until his exhaust problem developed. Despite pitting earlier than Massa, he had been able to establish a six-second advantage in the first half of the race.
But then part of the Ferrari's exhaust system came loose, costing Raikkonen speed and scorching the car's bodywork. As his lap times rose, the Finn had to hand the lead to Massa on lap 38, allowing the Brazilian to charge away and secure his third win of the year.
Trulli had jumped to third at the start and resisted race-long pressure from various pursuers to cling on to the podium place.
In the end it was Kovalainen and erstwhile championship leader Robert Kubica (BMW) who hounded the Toyota to the chequered flag, as Trulli's pace slowed more than the chasing pack when a brief rain shower struck with a dozen laps to go.
Kovalainen had used long stints to move up through the field after his five-place grid penalty, and a mid-race pass on Mark Webber at the Adelaide hairpin allowed him to chase down Kubica and pass the BMW in the final stops.
A final bid to pass Trulli on the penultimate lap saw Kovalainen taking to the run-off at the Imola chicane after they nearly touched at high-speed, but both survived that scare to come home third and fourth.
Despite some assertive overtaking, Kovalainen's teammate Hamilton could not produce a similar result. The penalty for missing the chicane apex was awarded just before his first pitstop and left him at the tail of the field. He managed to recover as far as 10th, but could not get past David Coulthard's Red Bull in the final laps.
Fernando Alonso's bid to take a podium for Renault on home ground was immediately hurt by a poor start that dropped him from third to fifth. He passed Kubica as the BMW went wide while attacking Trulli, only to fall back into the pack when he made his pitstops earlier than all his nearest rivals.
An error by Webber allowed Alonso to get back up to fifth in the middle stint, but he lost out to the Red Bull again in the final stops, and with Kovalainen also vaulting ahead, he emerged in a disappointing seventh.
The former champion then lost to his teammate Nelson Piquet when he went wide while trying to pass Webber with two laps to go.
The Brazilian produced a quietly impressive drive to earn his first points finish, having shrugged off heavy pressure from both McLarens in his first stint. Alonso had to settle for eighth.
Timo Glock (Toyota) ran in the points early on but lost ground in the pit sequences then was passed by Hamilton during the rain shower. He finished just ahead of Sebastian Vettel - whose long first stint saw him run as high as fourth for Toro Rosso - and the muted Nick Heidfeld's BMW.
The race saw only one retirement, as Jenson Button's Honda eventually succumbed to the damage it sustained when he hit Sebastien Bourdais' Toro Rosso at the first corner.
PROVISIONAL RACE RESULTS The French Grand Prix Magny Cours, France; 70 laps; 308.586km; Weather: Cloudy, then light rain. Classified: Pos Driver Team Time 1. Massa Ferrari (B) 1h31:50.245 2. Raikkonen Ferrari (B) + 17.984 3. Trulli Toyota (B) + 28.250 4. Kovalainen McLaren-Mercedes (B) + 28.929 5. Kubica BMW Sauber (B) + 30.512 6. Webber Red Bull-Renault (B) + 40.304 7. Piquet Renault (B) + 41.033 8. Alonso Renault (B) + 43.372 9. Coulthard Red Bull-Renault (B) + 51.021 10. Hamilton McLaren-Mercedes (B) + 54.538 11. Glock Toyota (B) + 57.700 12. Vettel Toro Rosso-Ferrari (B) + 58.065 13. Heidfeld BMW Sauber (B) + 1:02.079 14. Barrichello Honda (B) + 1 lap 15. Nakajima Williams-Toyota (B) + 1 lap 16. Rosberg Williams-Toyota (B) + 1 lap 17. Bourdais Toro Rosso-Ferrari (B) + 1 lap 18. Fisichella Force India-Ferrari (B) + 1 lap 19. Sutil Force India-Ferrari (B) + 1 lap Fastest lap: Raikkonen, 1:16.630 Not classified/retirements: Driver Team On lap Button Honda (B) 17 World Championship standings, round 8: Drivers: Constructors: 1. Massa 48 1. Ferrari 91 2. Kubica 46 2. BMW Sauber 74 3. Raikkonen 43 3. McLaren-Mercedes 58 4. Hamilton 38 4. Red Bull-Renault 24 5. Heidfeld 28 5. Toyota 23 6. Kovalainen 20 6. Williams-Toyota 15 7. Trulli 18 7. Renault 12 8. Webber 18 8. Honda 8 9. Alonso 10 9. Toro Rosso-Ferrari 7 10. Rosberg 8 11. Nakajima 7 12. Coulthard 6 13. Barrichello 5 14. Glock 5 15. Vettel 5 16. Button 3 17. Piquet 2 18. Bourdais 2 All timing unofficial