Dani Pedrosa has won his second race back since breaking his collarbone, after a hard-earned victory over world championship contenders Casey Stoner and Jorge Lorenzo in Sunday's German Grand Prix.

The early stages of an exciting race conjured up images of the 2006 event - when Yamaha's Valentino Rossi took on and beat three Honda riders - as Lorenzo led the factory RCVs of Stoner, Pedrosa, Andrea Dovizioso and Marco Simoncelli.

Still third as the middle stages came and went, Pedrosa began his march forwards soon after, and made his race-winning pass by blasting by Lorenzo's M1 along the home straight on lap 22 of 30.

Related Articles

By then Stoner was struggling with tyre problems and, although he finally got past Lorenzo with five laps to go, the Australian couldn't close on Pedrosa and instead found himself having to defend the runner-up position.

Lorenzo looked to have lost his chance to gain points on Stoner when he ran slightly wide during the final lap, but some defensive lines by Stoner allowed Lorenzo to get close enough to launch a last-turn pass that netted an unexpected second for the delighted Spaniard.

Ahead of him, Pedrosa won his second race of the year by 1.477sec, with Lorenzo reducing Stoner's title lead to 15 points heading into next weekend's Laguna Seca round.

Third Repsol rider Dovizioso and Gresini's Simoncelli lost touch with the leaders during the second half of the race, and were later caught by Lorenzo's team-mate Ben Spies.

A last turn attempt to re-pass Dovizioso for fourth saw Simoncelli run wide and Assen winner Spies snatch fifth from the Italian.

Another final turn showdown decided seventh place, with Rizla Suzuki's Alvaro Bautista winning a thrilling battle against factory Ducati riders Nicky Hayden and Valentino Rossi respectively.

Seven-time MotoGP champion Rossi began his 250th grand prix from just 16th on the grid, and joined the Hayden-Bautista battle after ten laps, the trio alternating positions thereafter.

Monster Yamaha Tech 3's Colin Edwards dropped away from that fight in the closing stages on his way to tenth, while satellite Ducati riders Hector Barbera, Karel Abraham and Randy de Puniet completed positions 11th to 13th.

Cal Crutchlow (Tech 3) and Hiroshi Aoyama (Gresini) were the final scorers.

Toni Elias took 16th for LCR Honda with Sylvain Guintoli, replacing Loris Capirossi at Pramac Ducati, finishing his first grand prix since Valencia 2008 in 17th and last.

German Grand Prix:

1. Pedrosa
2. Lorenzo
3. Stoner
4. Dovizioso
5. Spies
6. Simoncelli
7. Bautista
8. Hayden
9. Rossi
10. Edwards
11. Barbera
12. Abraham
13. de Puniet
14. Crutchlow
15. Aoyama
16. Elias
17. Guintoli