Goals from Elkeson, Schwenk and Ramon secured victory, with Jean and Fernandao replying for Sao Paulo, who fell to 10th place.
Vasco da Gama jumped above Atletico Paranaense in the lower reaches of the table by beating the team from Curitiba 3-1 in an action-packed match.
Jonatan put Vasco da Gama ahead after 19 minutes, and a penalty from Nunes six minutes later stretched the lead.
Atletico Paranaense then had two men sent off in quick succession, losing Chico and Eli Sabia, before Bruno Mineiro scored for the nine-man side just before half-time.
Gago made sure there was to be no grand comeback though, scoring Vasco da Gama's third goal in the 62nd minute.