Lionel Messi scored twice as Barcelona won a dramatic showdown with Valencia 4-2 to cut the gap to La Liga leaders Real Madrid to two points.
Barca were desperate for a victory to keep the pressure on Real after handing the initiative to their rivals following last weekend's surprise defeat at Deportivo La Coruna.
But they were given a huge scare by Valencia, who took the lead through a header from on-loan Manchester City defender Eliaquim Mangala.
However, the lead lasted just six minutes before Neymar's quick throw-in caught the Valencia defence napping and Luis Suarez raced through to equalise.
A minute before half-time Mangala felled Suarez in the area to earn his marching orders and Messi tucked away the spot-kick.
But the drama did not end there as the 10 men immediately hauled themselves level, with Barca's own player doing the damage.
This time Barcelona switched off at the back and Jose Luis Gaya squared for on-loan winger Munir El Haddadi to find the net, prompting a distinctly muted celebration.
But eight minutes after the break Messi fired the hosts back in front, wriggling past Aymen Abdennour before beating Diego Alves at his near post.
Barca wrapped up a vital victory two minutes from the end when Neymar burst down the left and picked out Andre Gomes for a tap-in.
Diego Godin, Antoine Griezmann and Koke fired fourth-placed Atletico Madrid to a crucial 3-1 victory over Sevilla.
Godin scored with a first-half header before Griezmann lashed in a stunning 25-yard free-kick after the break.
Koke tapped into an empty net for the third as Atletico moved to within two points of their third-placed visitors.
Sevilla, seeking to close the gap on Real, only had Joaquin Correa's consolation to show for their efforts and remain eight points adrift as their already faint title hopes suffered another blow.
The defeat capped a miserable week for Sevilla after they were dumped out of the Champions League by Leicester on Tuesday.
Sporting Gijon grabbed their first win in six matches with a 3-1 success over relegation rivals Granada.
After a goalless first half the vistors took the lead through Iceland defender Sverrir Ingi Ingason's 51st-minute tap-in.
But nine minutes later Lacina Traore equalised after he was teed up by on-loan Real Madrid winger Burgui.
In the 64th-minute Sporting took the lead when Jean-Sylvain Babin headed in Sergio Alvarez's corner, and three minutes later Carlos Carmona thumped in the third.
The hosts could even afford to miss an 82nd-minute penalty, Guillermo Ochoa saving Traore's effort, and climb above Granada into 18th.
A solitary goal from Iago Aspas was enough to earn Celta Vigo a 1-0 win at Deportivo.
The former Liverpool forward tapped in a cross from Claudio Beauvue with 16 minutes remaining.
In Sunday's early kick-off lowly Leganes and Malaga fought out a goalless draw.