Jorge Lorenzo has extended his advantage at the head of the MotoGP World Championship standings with victory in front of his home fans at Catalunya.
The Factory Yamaha star won his third race from five starts after a near race-long duel with fellow home hero Dani Pedrosa.
The fast starting Repsol Honda rider threaded his way through from the second row to lead into turn one. Lorenzo's team-mate Ben Spies then briefly passed Pedrosa on lap 3, only to run wide and fall after clipping the grass.
Lorenzo made no such mistake when he outbraked Pedrosa with a tight pass into turn one on lap 7 of 25. But Pedrosa - seeking his first win - stuck with Lorenzo and slipstreamed back ahead just before the halfway stage.
Pedrosa then looked to be handed a golden chance to claim his first win of the year when Lorenzo bobbled under braking and lost one-second to the RCV rider.
But Lorenzo, using the softer rear tyre, was able to reel Pedrosa (on the harder rear) back in and made a victory pass when Pedrosa became unsettled by a wheelie on the back straight with just over five laps to go.
Watched from the pits by the Yamaha president, Lorenzo went on to win by five seconds, then celebrated with his fan club - including a red and white foam explosion after Lorenzo and an accomplice poured chemicals into two buckets.
4.3sec from Pedrosa, a delighted Andrea Dovizioso took his first podium as a Yamaha rider with a confident third place for the satellite Monster Tech 3 team. The Italian occupied the position for much of the race - then held off a charging Casey Stoner on the final lap.
Dovi's podium is the first by a non-factory rider this year, and first by a satellite MotoGP rider since the late Marco Simoncelli.
Perhaps due to the cooler conditions, pole sitter and reigning champion Stoner was unable to run at the front and spent much of the race fending off Dovizioso's team-mate Cal Crutchlow, before making a late burst.
Stoner is now 20 points from Lorenzo after missing the podium for the first time since Jerez 2011.