Raul and Ruud van Nistelrooy were also the scoresheet for Los Merengues.
Borja Valera scored twice for Mallorca and Daniel Guiza added a third but their efforts were not enough to deny the royal club.
Real extended their lead on the league summit as they are top with 28 points, four ahead of second-placed Barcelona, who were handed a 2-0 defeat at Getafe on Saturday.
Robinho fired the hosts in front after 11 minutes when his back-heel found Marcelo on the left before the Brazilian full-back crossed for his compatriot, whose looping header went into the net.
Marcelo was to blame for Mallorca's equalizer just two minutes later.
The former Fluminense man failed to deal with a long ball, allowing Spanish midfielder Valera to go clear and round Ilker Casillas before slotting home.
Real soon restored their lead through the in-form Robinho, who notched a controversial goal in the 17th minute.
Wesley Sneijder's intentional shot struck Raul and went into the path of Robinho, who made no mistake from inside the area. Television replays showed the 23-year-old forward was in an offside position.
Valera scored his second of the game to re-equalize for the visitors seven minutes before the break when he fired an unstoppable bullet into the top corner of the net.
Guiza put the visitors ahead in the 57th minute after he capitalized on Mahamadou Diarra's miss-pass to hit a first-timer past Casillas.
Two minutes past the hour mark, Robinho sidestepped a defender inside the area and fed Raul for an easy tap-in into an empty net.
Van Nistelrooy scored the decisive strike ten minutes later as he latched on to Raul's through pass before steering home.