The race was held over a total of 63 laps of the 4.42-kilometre (2.75 mi) circuit for a race distance of 278.5 kilometres (173.1 mi). The race was divided into two heats after British driver Derek Warwick crashed his Arrows A10 heavily exiting the high-speed Peraltada corner on lap 31 after a rear suspension failure; the Arrows car's rear suspension was weakened by Satoru Nakajima crashing his Lotus-Honda straight into the back of Warwick's car at the end of the main straight earlier in the race. The results of the first 30 laps were combined with the results of the second race of 33 laps to create a combined result.
The race was won by British driver Nigel Mansell driving a Williams FW11B. Mansell's combined time over the 63 laps was 26 seconds faster than his Brazilian teammate and eventual 1987 World Champion, Nelson Piquet. Piquet actually took the chequered flag first at the end of the second heat, but Mansell's lead over Piquet at the time of Warwick's accident was substantially larger. Piquet had been delayed after a collision with Alain Prost (McLaren MP4/3) on the first lap.
It was Mansell's sixth and last Grand Prix victory for the 1987 season. Riccardo Patrese finished third driving a Brabham BT56. It was Patrese's best result since finishing third in the 1984 Italian Grand Prix. It was just the second podium of the year for Brabham. Brabham would only score one more podium before it would fold in 1992.
Attrition bit heavily into the race with just fifteen cars taking the second race start. Nine survived to the finish. Naturally aspirated Jim Clark Trophy cars climbed into the points with Philippe Alliot (Lola LC87) taking his third top six result for the year.
Ayrton Senna was fined $15,000 for punching a corner marshal after they refused to push his stalled car.
Mansell's victory allowed him to close to within twelve points of his championship leading teammate. With just two races left, only the Williams drivers had enough points to win the championship.