He completed the 65-lap race in a time of 1 hour, 33 minutes, 46.933 seconds while averaging 121.905 miles per hour (196.620 kph).
The five-time World Champion from Germany shrugged off a fleeting first-lap collision with Brazilian teammate Rubens Barrichello to continue his domination of the Circuit de Catalunya. Starting from his sixth pole here, he claimed his fifth victory at the track.
Fernando Alonzo, a 21-year-old local who split the two Ferraris with his Renault at the start, recorded his best career F1 result in front of his home crowd by coming in second. It was only his third career podium finish.
Barrichello came in third, followed by Williams-BMW drivers Juan Montoya of Colombia and Germany's Ralf Schumacher. Cristiano da Matta of Brazil came in sixth in a Toyota to earn his first points of the year.
Australia's Mark Webber scored his first points for Jaguar with a seventh-place finish while British rookie Ralph Firman celebrated his first grand prix point with eighth for Jordan-Honda.
Another British rookie, Justin Wilson, was 11th for Minardi. It was the first time he finished in five attempts.
Scot David Coulthard's championship hopes took a blow as he crashed out after a collision with Englishman Jenson Button, who finished ninth for BAR-Honda.
Finn Kimi Raikkonen, forced to start from the back of the grid after messing up his qualifying lap Saturday, hit the back of Antonio Pizzonia's Jaguar as he sped away when the red lights went out.
Race officials sent out the safety car to clear the damaged McLaren and Jaguar off the grid by which time Raikkonen's teammate Coulthard had collided with Jarno Trulli, ending his Renault rival's race and forcing him into a first-lap pit stop for repairs.
Coulthard's hopes of cutting his 13-point deficit to Raikkonen were abruptly ended after just 19 laps when he was dumped in the sand by Button as the BAR driver attempted to pass.
It was a poor afternoon for the McLaren, which had won the first two races. In addition to Raikkonen's championship lead shrinking, Coulthard plummeteed from second to fifth in the drivers' standings.
Schumacher's race also could have been over by the first corner as the Ferraris briefly touched as Barrichello tried to grab the lead from the pole winner after having briefly lost second spot as Alonso charged off the grid.
The 34-year-old controlled the race thereafter, only losing the lead briefly after each of his three pit stops.
Alonso matched Schumacher's pace for much of the afternoon and confirmed he is the rising young talent of Formula One, his performance delighting the thousands of countrymen who flocked to the circuit.
Schumacher moved into second place in the drivers' standings, four points in back of Raikkonen, who endured his first non-finish of the season.
Alonso is third in the standings, just three points further back.