The Lotto-Belisol rider from Germany surged past Katusha’s Rudiger Selig on the finish line to take victory after a 186km ride.
Dutchman Raymond Kreder of Garmin Barracuda was third.
It was Greipel’s 12th victory of the season.
Selig had been leading and looked set to take the victory with 50m to go, but Greipel showed his trademark acceleration to snatch the win.
Greipel is now in fine form ahead of the Tour de France, having taken impressive multiple wins in Luxembourg and Belgium over the past month.
Race result (top 10 all with time of 4:08:49):
1. Andre Greipel (Ger) Lotto Belisol Team
2. Rudiger Selig (Ger) Katusha Team
3. Raymond Kreder (Ned) Garmin - Barracuda
4. Tom Veelers (Ned) Argos-Shimano
5. Andre Schulze (Ger) Team Netapp
6. Marko Kump (Slo) Adria Mobil
7. Michael Schweizer (Ger) Nutrixxion Abus
8. Fabian Schnaidt (Ger) Team Specialized Conce
9. Bjoern Schroeder (Ger) Raiko Stoelting
10. Henning Bommel (Ger) LKT Team Brandenburg