Dani Pedrosa returned to winning ways after a three-man battle at the Sachsenring.
The Repsol Honda rider saw off Yamaha's Jorge Lorenzo and his team-mate Casey Stoner to win for the first time since
breaking a collarbone in May.
Lorenzo closed the gap on Stoner at the top of the championship by taking second, with Andrea Dovisioso fourth.
British rider Cal Crutchlow was 14th, with Valentino Rossi's poor form continuing as he came home in ninth.
Pole-sitter Stoner managed to get ahead by lap five but he was unable to break clear of the chasing quartet and Lorenzo's brave move saw him muscle back past with 17 laps left.
Pedrosa then surprised Stoner by overtaking him over the start/finish line.
Spaniard Pedrosa - now fully fit after a spell on the sidelines - then took advantage of an error from Lorenzo to take the lead with nine laps left before Stoner followed him through to relegate Lorenzo to third.
Pedrosa thanks doctors after German GP win
Lorenzo then pulled off a fine move on the final corner to take second place from Stoner and close the gap at the top of the standings to only 15 points.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.