Goals from centre back Rafael Marquez and striker
Samuel Eto'o gave Barcelona their third away win of the season when they beat Real Mallorca 2-0 in the Primera Liga on Saturday.
In the showdown of the third and fourth-placed teams, Espanyol won 3-0 at home to Villarreal to extend their unbeaten run to 14 matches.
Striker Raul Tamudo opened the scoring on nine minutes with a low shot. Midfielder Valdo flicked in the second after Luis Garcia had hit the bar before Tamudo took his tally for the season to 10 by heading home a 36th-minute corner.
Real Madrid, who host an out-of-sorts Real Zaragoza on Sunday, lead the table on 41 points. Barca are four points behind, one ahead of Espanyol and five in front of Villarreal.
Barca went into their game under heavy pressure, having lost 1-0 at home to arch-rivals Real Madrid in the final match of last year, and made a sluggish start against the islanders who were sharper for much of the first period.
Mallorca striker Daniel Guiza gave the visitors an early scare when he sent a shot skidding past the post while midfielder Angelos Basinas lashed the ball wide midway through the half. The hosts continued to look dangerous at the start of the second period but Barca snatched the lead after 63 minutes when Marquez took advantage of slack marking to head a corner past keeper German Lux.
Substitute Thierry Henry, making his first appearance in over a month, went close to extending the lead before Eto'o sealed the win two minutes into added time.
The former Mallorca player blasted home a powerful long-range effort after good work by Bojan Krkic on the left.
"Mallorca made it very difficult but it was an important win for us," Barca coach Frank Rijkaard told reporters.