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:
13. de Puniet