It was Button's third win in Melbourne in four years, with Vettel's victory in 2011 breaking the streak. Button has won 13th Formula 1 races in his career.
A problem with Vitaly Petrov's car led to the safety car heading onto the track, which gave Vettel a final chance with 18 laps to go. But Button quickly forged an advantage and left Vettel, the two-time defending driving champion, to fight for second.
Button, driving for McLaren-Mercedes, finished the 58-lap, 191-mile race in 1 hour, 34 minutes, 9.565 seconds. Vettel's Red Bull-Renault was second, 2.1 seconds back.
The Formula 1 tour heads to Kuala Lumpur for the Malaysian Grand Prix next Sunday. Vettel is the defending champion of the race, beating Button by 3.3 seconds last year.
Jessica Simpson shares three-way kiss with friends in photo
Susan Sarandon 'very excited' about daughter's pregnancy