Michael Schumacher won the San Marino Grand Prix for his and Ferrari's first victory of the Formula One season on Sunday.
It was the seven-times world champion's 85th career success, and seventh at Ferrari's home circuit, but he was harried all the way by Renault's world champion Fernando Alonso.
In a repeat of last year's nose-to-tail thriller only in reverse order, with that race won by Alonso with Schumacher failing to find a way past, the German held on to win by 2.0 seconds.
Schumacher's last victory was at the six-car US Grand Prix last June, a race that turned into a fiasco when all the Michelin teams pulled out before the start.
His last real win was the Japanese Grand Prix in October 2004, a season he dominated with 13 victories.
Colombian Juan Pablo Montoya was third for McLaren, ahead of Brazilian Felipe Massa for Ferrari and Kimi Raikkonen in another McLaren.
Australian Mark Webber was sixth for Williams, with Briton Jenson Button seventh for Honda and Italian Giancarlo Fisichella taking the last point for Renault.
Alonso, winner of two of the season's first three races, extended his championship lead by one point to 15 with Schumacher moving up to second overall.
The Spaniard has 36 points, Schumacher 21 and McLaren's Kimi Raikkonen 18. Renault lead the constructors' standings with 51 points to McLaren's 33 and Ferrari's 30.
Schumacher had led from pole position, a record 66th of his career to overtake the late great Ayrton Senna's 65, until he pitted at the end of lap 20 as Alonso hit the front.
Alonso had five quick laps before he too pitted and handed the lead back to Schumacher.
The real duel began there, with the German suddenly far slower on his second set of scrubbed tyres and Alonso right up behind him after slashing the advantage from 11.2 seconds to 0.2 within 10 laps.
Button's hopes of finishing on the podium, after starting second on the grid, evaporated in a pit lane blunder when he made his second stop at the end of lap 30.
The signal for him to go was given with the fuel line still attached to his car and Button hit the throttle before the 'lollipop' man in front of him changed his mind and switched from green to red.
With mechanics falling to the ground and the stop/go lollipop banging against his visor, he braked for the broken nozzle to be prised from the fuel flap.
The safety car came out on the first lap when Super Aguri's Japanese driver Yuji Ide and Midland's Christijan Albers collided.
The Dutchman's car, in front of Ide, rolled five times before coming to rest upside down in the gravel. Albers climbed out unhurt while Ide pitted and then retired two laps later.
Italian Jarno Trulli's miserable season continued, with the Toyota driver -- second in the championship at this stage last year -- still without a point after four rounds.
He retired from his home race on lap seven with a steering failure.
1. Michael Schumacher (Germany) Ferrari 1:31:06.486
2. Fernando Alonso (Spain) Renault +00:02.096
3. Juan Pablo Montoya (Colombia) McLaren 00:15.868
4. Felipe Massa (Brazil) Ferrari 00:17.096
5. Kimi Raikkonen (Finland) McLaren 00:17.524
6. Mark Webber (Australia) Williams - Cosworth 00:37.739
7. Jenson Button (Britain) Honda 00:39.635
8. Giancarlo Fisichella (Italy) Renault 00:40.200
9. Ralf Schumacher (Germany) Toyota 00:45.511
10. Rubens Barrichello (Brazil) Honda 01:17.851
11. Nico Rosberg (Germany) Williams - Cosworth 01:19.675
12. Jacques Villeneuve (Canada) BMW Sauber 01:22.370
13. Nick Heidfeld (Germany) BMW Sauber 1 lap
14. Vitantonio Liuzzi (Italy) Toro Rosso - Cosworth 1 lap
15. Scott Speed (U.S.) Toro Rosso - Cosworth 1 lap
16. Tiago Monteiro (Portugal) MF1 - Toyota 2 laps
r. David Coulthard (Britain) RedBull - Ferrari 16 laps
r. Takuma Sato (Japan) Super Aguri - Honda 18 laps
r. Christian Klien (Austria) RedBull - Ferrari 22 laps
r. Yuji Ide (Japan) Super Aguri - Honda 40 laps
r. Jarno Trulli (Italy) Toyota 58 laps
r. Christijan Albers (Netherlands) MF1 - Toyota 61 laps