Barca showed no ill effects from the two-week layoff, maintaining its 11-point lead at the top with the win, its 14th in 17 La Liga games.
The difference in the game was Spanish international midfielder Andres Iniesta, who came on in the second half to give Barca a spark in his first game back after missing eight weeks with an injury.
Mallorca led on a goal by Aritz Aduriz with a quarter of an hour gone, but Thierry Henry evened the match soon thereafter.
Iniesta scored the winning goal on a tap-in in the 75th minute, and Mali star Yaya Toure, at fault on the Mallorca goal, put the game away in stoppage time.
Mallorca players complained Iniesta was offside when he received the ball on his goal.
"We can all make mistakes but it hurts when a refereeing error destroys a match," Mallorca coach Gregorio Manzano. "That mistake determined the outcome of the game."
Barca coach Pep Guardiola was happy to get a win after the holiday layoff.
"It was a real effort for us tonight," he said, "but we showed patience, order and calm."
Second-place Valencia beat Atletico Madrid, 3-1, thanks to two goals from David Silva and a David Villa penalty.
Real Madrid moved into a tie for third place with Sevilla thanks to its 1-0 win over Villarreal on a beauty by Arjen Robben.
Atletico dropped to fifth place, while Villarreal is now in seventh.
Mexican Hugo Sanchez won his first game in charge at Almeria, a 1-0 winner over Real Betis.