Lionel Messi scored twice as Barcelona beat Valencia 4-2 to cut the gap to La Liga leaders Real Madrid to two points.
Barca were given a huge scare as Valencia 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 through on-loan winger Munir El Haddadi.
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.
Meanwhile, Diego Godin, Antoine Griezmann and Koke fired fourth-placed Atletico Madrid to a 3-1 victory over Sevilla, while Real Madrid battled their way to a 2-1 win at Athletic Bilbao.
Elsewhere, Juan Cuadrado hit a seventh-minute winner as Juventus ended Sampdoria's unbeaten run to preserve their lead at the top of Serie A.
The 1-0 victory at the Marassi means Juve remain 10 points clear of Napoli with only nine games remaining.
Meantime, Thomas Muller ended his Bundesliga scoring drought to give champions Bayern Munich a 1-0 win at Borussia Monchengladbach.
Muller's 63rd-minute strike extended Bayern's commanding lead at the top of the league to 13 points.
And in Holland, Feyenoord came from behind to earn a valuable 2-1 victory at Heerenveen as they close in on their first Eredivisie title in 18 years.