Casey Stoner closed the gap on championship leader Jorge Lorenzo with a comfortable win in damp conditions at the Catalunya MotoGP.
The Australian was well clear of the field for most of the race, with Lorenzo second and Ben Spies third.
Pole sitter Marco Simoncelli never recovered from a slow start and finished in sixth place.
Heavy cloud and spitting rain made tyre choices a gamble and Stoner's choice earned him his third win in five races.
"Jorge got off to a good start and I had to wait until the end of the first lap to overtake him and then he couldn't stay with me, fortunately," said Stoner afterwards.
"On the last curve it was getting a bit slippery but we managed to bring it home. It's an important victory."
Lorenzo admitted he was happy with second place, despite having seen his championship lead further eroded by Stoner's win.
"I tried to keep up with him but when it started to rain it would have been easy to make a mistake," Lorenzo said.
"It was a delicate situation and we had to be intelligent especially on the last few laps. We still lead the championship and we'll have to see in the coming races if we can get closer to Casey."
Cal Crutchlow's impressive debut season in MotoGP continued with a seventh place finish.
"I lost too much time at the start trying to get heat into the tyres," the British rider told BBC Sport.
"I finished 26 seconds off the win but in [the Portuguese MotoGP at] Estoril we were 40 seconds off so we have made improvements and that's what we're looking for going into the home Grand Prix at Silverstone next weekend.
"We have got something to build on and that's a half decent result."
Much was expected of Simoncelli, the centre of so much pre-race attention, as he began from pole for the first time.
But the criticism of his riding style and memories of his first-lap crash in Portugal seemed to take the edge off his performance, as he failed to take advantage of his good starting position and was soon caught up by the pack.
Catalunya MotoGP result:
1 C Stoner (Aus) Honda 43mins 19.779secs
2 J Lorenzo (Spn) Yamaha 43:22.182
3 B Spies (US) Yamaha 43:24.070
4 A Dovizioso (Ita) Honda 43:25.034
5 V Rossi (Ita) Ducati 43:27.150
6 M Simoncelli (Ita) Honda 43:31.610
7 C Crutchlow (GB) Yamaha 43:46.262
8 N Hayden (US) Ducati 43:53.022
9 L Capirossi (Ita) Ducati 44:02.871
10 K Abraham (Cz) Ducati 44:02.892
11 H Barbera (Spn) Ducati 44:04.003
12 A Bautista (Spn) Suzuki 44:05.018
13 T Elias (Spn) Honda 44:18.047
1 J Lorenzo (Sp) Yamaha 98
2 C Stoner (Aus) Honda 91
3 A Dovizioso (It) Honda 63
4 D Pedrosa (Sp) Honda 61
5 V Rossi (It) Ducati 58
6 N Hayden (US) Ducati 47
7 B Spies (US) Yamaha 36
8 H Aoyama (Jpn) Honda 36
9 M Simoncelli (It) Honda 32
10 C Crutchlow (GB) Yamaha 30
11 H Barbera (Sp) Ducati 26
12 K Abraham (Cze) Ducati 24
13 C Edwards (US) Yamaha 21
14 T Elias (Sp) Honda 20
15 L Capirossi (It) Ducati 16
16 A Bautista (Sp) Suzuki 11
17 R de Puniet (Fr) Ducati 6
18 J Hopkins (US) Suzuki 6
1 S Bradl (Ger) Kalex 41 minutes, 38.888 seconds
2 M Marquez (Spn) Suter @ 4.141 seconds
3 A Espargaro (Spn) Kalex @ 8.409
1 S Bradl (Ger) Kalex 102 points
2 S Corsi (Ita) FTR 59
3 A Iannone (Ita) Suter 49
1 N Terol (Spn) Aprilia 42 minutes 29.647 seconds
2 M Vinales (Spn) Aprilia @10.356 seconds
3 J Folger (Ger) Aprilia @15.260
1 N Terol (Spn) Aprilia 120 points
2 S Cortese (Ger) Aprilia 72
3 J Folger (Ger) Aprilia, 68