Kimi Raikkonen won the Belgian Grand Prix for the third time in a row on Sunday, leading a Ferrari one-two to revive his title challenge.
Brazilian Felipe Massa finished second, 4.6 seconds behind the Finn, with McLaren's double world champion Fernando Alonso third to cut team mate Lewis Hamilton's overall lead to two points.
With three races remaining, 22-year-old rookie Hamilton has 97 points to Spaniard Alonso's 95. Raikkonen, celebrating his 13th career win and fourth of the year, is on 84 with Massa taking his tally to 77.
If any proof were needed that the gloves were off between the McLaren drivers, whose team were stripped of all their 2007 constructors' points and fined $100 million (49 million pounds) on Thursday for their part in a spy controversy, Alonso forced Hamilton off the track coming out of the first corner.
Ferrari mathematically clinched the Formula One constructors' title, subject to any appeal from McLaren against their penalty in the next week.
Ferrari, celebrating their third one-two of the year and in the last five races, now have 161 points. Second-placed BMW-Sauber are on 90 with 54 remaining to be won. McLaren would have had 177.
The last race of the European season, and first in Belgium since 2005, had a familiar winner with Raikkonen triumphant with McLaren at the longest circuit on the calendar in the previous two editions.
The Finn led from pole position on a sunny afternoon in the Ardennes, with Massa slotting smoothly into second place and the McLaren drivers producing the early fireworks as they scrapped for third.
With Hamilton almost alongside, Alonso shut the door and forced his team mate wide onto the runoff.
The Briton still came back but was unable to get his revenge with the first four at the chequered flag reflecting the starting order.
Germany's Nick Heidfeld was fifth for BMW Sauber with compatriot Nico Rosberg sixth for Williams.
Australian Mark Webber collected two points for Red Bull while Finland's Heikki Kovalainen wrapped up the scorers with eighth place for Renault.