Da Silva Liedson fired the home side in front after just 12 minutes, but Santos hit back through Lima Henrique (37), Humberlito Borges (53) and Alan Kardec (80).
The visitors even survived having Henrique sent off midway through the second half.
Elsewhere on Sunday, Atletico Paranaense and Figueirense drew 0-0, while Avai and Palmeiras also shared the spoils after a 1-1 draw which saw three players sent off.
Jose Batista put Avai in front after five minutes and Palmeiras looked in deep trouble when Barbosa Rivaldo was sent off just 18 minutes later.
However, Luis Chico (41) equalised before his side were reduced to nine men with the dismissal of substitute Ferreira Gerley on 48 minutes. Avai failed to take advantage and had Rafael Coelho sent off just after the hour.
Fluminense also had a man sent off as they went down 3-0 at Bahia, who opened the scoring on 27 minutes through Rodrigo De Souza.
An own goal from Wellington Gum doubled Bahia's lead and the game was over when Gum was sent off 20 minutes from time and De Souza scored his second from the penalty spot.
Botafogo and Flamengo drew 1-1 with Vieira Jael's 49th-minute equaliser for the visitors cancelling out Loco Abreu's opener in the first half.
And the game between Internacional and Coritiba also finished 1-1, Oscar scoring in the first minute for Internacional but Emerson equalising early in the second half.
Cruzeiro and bottom side America MG played out a goalless draw.