The Renault e.dams driver only took one point from the opening two races, but he added three to his tally by pipping Sam Bird by just over two tenths.
Sweden's Felix Rosenqvist took the lead in the Formula E championship for the first time on Saturday after winning the third race of the season in Marrakesh for India's Mahindra Racing.
From there it was a comfortable win for the Swede, just ahead of Buemi, with Bird a distant third, seemingly dealing with a gearbox problem.
"Last year was the point where we learnt what we needed to do to and this year we did it", said Rosenqvist, who took second from Bird just before the change of cars and then passed Buemi with four laps to go. Bird faded in the second half of the race and only just beat Nelson Piquet Jr's Jaguar to the final podium place.
Piquet struggled in the opening stint and fell behind Jose Maria Lopez, but jumped the Dragon Racing replacement driver in the vehicle swaps and flew in the second half of the race to ease clear of Jean-Eric Vergne.
Maro Engel finished in seventh and was caught up in a late-race accident involving eighth place finisher Nick Heidfeld and his Venturi teammate, Edoardo Mortara, with Mortara retiring as a result of suspension damage.
With the lights green, a relatively clean Turn 1 followed, proving problematic only for DS Virgin Racing's Alex Lynn, who spun into the runoff area after Audi Sport ABT Schaeffler's Daniel Abt collided with him. Abt was subsequently handed a drive-through penalty which relegated him out of what could have been a strong points finish, meaning that he finished in 12th place. Oliver Turvey and Andre Lotterer also retired from the race for NIO and Techeetah.
Reigning FE champion di Grassi was part of the lead fight early on but slowed from fourth with what he called a "battery management system error" over the radio.