The weather was hot, with air temperature at 30°C, and the track temperature at 45°C as the cars lined up on the grid. Takuma Sato stalled as he came to the grid, but the other cars all took their positions and Charlie Whiting allowed the start of the race. Both Alonso and Montoya got away well, with Alonso leading into Copse. But Montoya held position through the left-handed Maggots corner to take the lead into Becketts, and for the remainder of the opening lap. As the marshalls tried to get Sato's car away from the grid and into pitlane, the safety car was called out on to the circuit to allow the car to be retrieved safely. Sato was able to rejoin the race soon after, albeit a lap behind. As the safety car re-entered the pits, Montoya led from Alonso, Button, Barrichello, Fisichella, Jarno Trulli and Michael Schumacher. Montoya quickly opened up a 1.3 second gap to Alonso, but this was quickly cut down as the Spaniard posted consecutive fastest laps. Meanwhile, Trulli was clearly holding up Michael Schumacher, allowing Räikkönen to close up behind. The Finn tried a move into Becketts, but had to brake heavily to avoid Schumacher and slid slightly wide. Further down in the field, Red Bull Racing's Christian Klien was challenging the Williams of Mark Webber, but a lunge saw him drive wide onto the grass at Stowe, losing 12th position to Nick Heidfeld.
On lap 11, Narain Karthikeyan became the race's first, and only, retirement, due to an electrical failure. Klien became the first driver to pit, refuelling on lap 11. At the front, Montoya and Alonso traded fastest lap times, with the gap between them standing at just over 1 second. Christijan Albers took his first stop on lap 16, followed on lap 17 by Barrichello and Patrick Friesacher. On lap 18, Alonso set another fastest lap, closing the gap to Montoya to just 0.7 seconds as their fuel loads burned off. The following lap, Jacques Villeneuve, Heidfeld and David Coulthard all took their first stops, with Button, Trulli and Webber following suit on lap 20. Two laps later, leader Montoya took his first stop, leaving Alonso in the lead while Fisichella set the race's fastest lap by nearly 0.3 seconds. Fisichella set another fastest lap on lap 23, moving into the lead as Alonso pitted. Coulthard ran wide onto the gravel at Abbey, allowing Villeneuve and Klien through. Alonso rejoined the race almost side-by-side with Montoya, who again held his line to retake the net lead, with Fisichella yet to stop.
Michael Schumacher and Felipe Massa took their first stops on lap 24, followed by Fisichella on lap 25, handing the lead back to Montoya. Räikkönen moved up the field to 3rd, before passing Alonso on the road and pitting on lap 26, falling back to 6th. On lap 28, with every driver except Sato having pitted, Montoya led by 3 seconds from Alonso, Fisichella, Button, Barrichello, Räikkönen, Michael Schumacher and Trulli. Lap 32 saw Sato take his first stop, whilst Barrichello took his second for the race, the Brazilian apparently the only driver on a three-stop strategy. Räikkönen then began setting quick laps, with a 1:21.303 on lap 27 followed by a 1:21.204 on lap 29, allowing the Finn to take one second per lap out of Button. Montoya responded to his teammate's pace, also setting fastest laps on lap 40 and 41, increasing his gap over Alonso to 6.3 seconds. Räikkönen was very close behind Button, but could not find a way through until Button pitted on lap 43. Montoya pitted, the following lap, but Alonso lost time trying to lap his former Renault teammate, Trulli. Räikkönen took his final stop on lap 45, easily taking 4th position from Button as he re-entered the race. Barrichello took his third stop on the same lap, losing 7th position temporarily to Ralf Schumacher. Fisichella, in line for his first podium since his win in the Australian Grand Prix, took his final stop on lap 46, but stalled his Renault, meaning it had to be restarted, and losing 3rd place to Räikkönen. Michael Schumacher, pitting on the same lap, dropped from 6th to 7th, but reclaimed the position when his brother Ralf pitted on lap 47.
Coulthard passed Webber for 12th on lap 48, but lost the position immediately as he was forced to make his final stop at the end of the same lap, rejoining 13th, ahead of Villeneuve, and slightly behind Heidfeld. Alonso, with a 19 second lead, made his final stop of the race on lap 49, but did not have enough time in hand to take the lead from Montoya. Montoya finished lap 50 with a 1.5 second lead over Alonso, who was comfortably ahead of Räikkönen. Alonso cut the deficit to just 0.9 seconds with 8 laps remaining, but appeared to concede the race, slowing down towards the end. As Montoya took a 2.7 second win over Alonso, Räikkönen set the fastest race lap on the final circuit, giving him a 3.4 second gap back to 4th-placed Fisichella. Button came in 5th, ahead of the Ferraris of Michael Schumacher and Barrichello, with Ralf Schumacher taking the final pointscoring position for Toyota. The result allowed Alonso to increase his lead in the championship, but only marginally, taking his tally to 77 points, ahead of Räikkönen on 51 and Michael Schumacher on 43. Montoya made a move up the standings to 6th, with 26 points. The Renault team passed 100 points in the constructors championship, with 102, followed by McLaren on 87 and Ferrari on 74.
|4||10||Juan Pablo Montoya||McLaren-Mercedes||1:20.382||+0.477|
|13||14||David Coulthard||Red Bull-Cosworth||1:22.108||+2.203|
|15||15||Christian Klien||Red Bull-Cosworth||1:22.207||+2.302|
|20||18||Tiago Monteiro||Jordan-Toyota||No time|
|1||10||Juan Pablo Montoya||McLaren-Mercedes||60||1:24:29.588||3||10|
|3||9||Kimi Räikkönen||McLaren-Mercedes||60||+14.4||12 †||6|
|10||12||Felipe Massa||Sauber-Petronas||59||+1 lap||16|
|11||7||Mark Webber||Williams-BMW||59||+1 lap||11|
|12||8||Nick Heidfeld||Williams-BMW||59||+1 lap||14|
|13||14||David Coulthard||Red Bull-Cosworth||59||+1 lap||13|
|14||11||Jacques Villeneuve||Sauber-Petronas||59||+1 lap||10|
|15||15||Christian Klien||Red Bull-Cosworth||59||+1 lap||15|
|16||4||Takuma Sato||BAR-Honda||58||+2 laps||7|
|17||18||Tiago Monteiro||Jordan-Toyota||58||+2 laps||20 ‡|
|18||21||Christijan Albers||Minardi-Cosworth||57||+3 laps||18|
|19||20||Patrick Friesacher||Minardi-Cosworth||56||+4 laps||19|