Paulo Miranda opened the scoring in the 29th minute and Filho Osvaldo doubled the lead 10 minutes later.
Sao Paulo are five points clear of fifth-placed Vasco da Gama, who twice led before going down to a last-minute winner at Botafogo.
Carlos Alberto (25 and 38) scored either side of Elkeson's equaliser, but Bruno Mendes made it 2-2 with 15 minutes remaining and then snatched a winner in the 90th minute for Botafogo.
In the day's other game, Sport Recife beat Ponte Preta 3-1 to climb out of the bottom three.
Rithiely (33) opened the scoring and Gerson Tobi made it 2-0 six minutes later, although Giancarlo Moro pulled a goal back on the stroke of half-time.
Gilsinho made the game safe with his side's third goal of the game 10 minutes from time.