The Italian Ducati rider, 27, finished 0.938 seconds ahead of compatriot and team-mate Andrea Dovizioso to give the team its first win since 2010.
Reigning world champion Jorge Lorenzo was third, while fellow Spaniard Marc Marquez was fifth but retains his lead in the overall standings.
Britons Scott Redding and Bradley Smith finished in eighth and ninth.
Austrian MotoGP result:
1. Andrea Iannone (Ita) Ducati 39 mins 46.255 seconds
2. Andrea Dovizioso (Ita) Ducati +0.938 seconds
3. Jorge Lorenzo (Spa) Yamaha +3.389 seconds
4. Valentino Rossi (Ita) Yamaha +3.815 seconds
5. Marc Marquez (Spa) Honda +11.813 seconds
6. Maverick Vinales (Spa) Suzuki +14.341 seconds
7. Dani Pedrosa (Spa) Honda +17.063 seconds
8. Scott Redding (GB) Ducati +29.437 seconds
9. Bradley Smith (GB) Yamaha +29.785 seconds
10. Pol Espargaro (Spa) Yamaha +37.094 seconds