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.