Hamilton established an advantage of about two seconds over Rosberg. At the first round of tyre changes, Hamilton had small cause for concern because his stop was slightly slower than his team-mate, but when Rosberg emerged from his pit visit two laps later, the Briton was still in the lead.
However, they were now on different tyre strategies, Hamilton on the softer-compound rubber and Rosberg on the theoretically slower hard variants. The fact the German went two laps longer on his first set meant Hamilton had to work hard to build a bigger cushion before his team-mate switched back to the softer rubber in the closing stage of the race.
As he tried to push hard, Hamilton complained over the car-to-pit radio that he was suffering from handling issues on his softer tyre. Rosberg's pace in this sector of the race, meanwhile, showed that using the harder compound was not as much of a disadvantage as had been expected.
Hamilton held a lead of just under four seconds when he peeled off for his second tyre change, which again was a comparatively tardy stop by current standards. As with the first stint, Rosberg remained out longer but complained that his harder rubber was beginning to grain, and he was unable to eat into the leader's advantage.
Rosberg changed on to the softer rubber and emerged back in second place, about four seconds down on Hamilton with 21 laps of the race remaining. Attention now focused on whether the German could use his grip advantage to chase down Hamilton sufficiently to mount an attack.
Rosberg set a succession of fastest laps to half the deficit, but a warning from his pit crew to look after his tyres prompted him to moderate his attack slightly. With eleven laps left to run, Hamilton reported that his left-front tyre was beginning to grain, and over the next few tours Rosberg went back on the offensive, trimming the gap further.
For lap after lap Hamilton was keep the gap just above one second, meaning Rosberg was unable to take advantage of the drag-reduction system to mount an attack on the long main straight.
On lap 64 of 66, the pressure told and Hamilton made a small mistake, running slightly wide and allowing Rosberg to close even further. The pressure was intense over the final two laps, but Rosberg made a slight brake lock-up on the final lap, which might have cost him the opportunity to attack the leader. He was just 0.6sec adrift at the end after 66 laps of hard racing.
A long way behind the Mercedes drivers, Ricciardo turned in yet another solid performance, having consistently impressed with his pace since his switch from Toro Rosso to the top-line Red Bull Racing team. Having been jumped by Bottas at the start, he leapfrogged the Williams driver during the first round of pit stops.
But the Australian's team-mate, Sebastian Vettel, endured a difficult weekend. He qualified tenth after getting stranded on the circuit with a gearbox problem, and was then hit with a five-place grid penalty because his engineers were forced to change the failed component.
Come the race, the four-time world champion fought hard to climb into the points, and went out of sequence on his pit stop strategy in an effort to find clear air on the circuit and leapfrog his rivals. He staged an aggressive charge up the order, overtaking Bottas for fourth with just four laps remaining and setting the fastest lap of the race.
The Ferraris of Fernando Alonso and Kimi Räikkönen circulated in close proximity for most of the race, having qualified sixth and seventh, with the Finn holding the advantage over his Spanish team-mate for most of the event. However, Alonso was on fresher tyres in the closing laps and quickly drafted up onto the tail of the sister Ferrari, nipping past with just four laps remaining.
Next the Formula 1 circus moves on to the Monaco Grand Prix on May 25.
Spanish Grand Prix, round 5/19, 11 May 2014
1 Lewis Hamilton (Mercedes)
2 Nico Rosberg (Mercedes)
3 Daniel Ricciardo (Red Bull)
4 Sebastian Vettel (Red Bull)
5 Valtteri Bottas (Williams)
6 Fernando Alonso (Ferrari)
7 Kimi Räikkönen (Ferrari)
8 Romain Grosjean (Lotus)
9 Sergio Perez (Force India)
10 Nico Hülkenberg (Force India)