Barcelona closed in on a third straight La Liga title when they drew 1-1 at 10-man Real Madrid, while Manchester City reached the FA Cup final for the first time in 30 years by beating arch-rivals Manchester United 1-0.
AC Milan and Borussia Dortmund stepped closer to the Italian and German titles respectively when they won and their nearest rivals lost at the weekend.
Barcelona took a giant stride towards a third straight La Liga title when they drew 1-1 at 10-man Real Madrid on Saturday to preserve their eight-point lead over their arch rivals at the top with six games left.
In a tense encounter at a packed Bernabeu, the first of four clashes between the teams in three competitions in 18 days, Lionel Messi put Barca ahead from the spot in the 53rd minute after Raul Albiol was sent off for a foul on David Villa.
The champions were cruising towards a sixth consecutive victory in the "Clasico" under coach Pep Guardiola when Dani Alves felled Marcelo and the referee awarded another penalty, converted by Cristiano Ronaldo in the 82nd minute.
Manchester City reached the FA Cup final for the first time in 30 years by beating arch-rivals Manchester United 1-0 with a Yaya Toure goal in their semi-final at Wembley.
United finished with 10 men after Paul Scholes was sent off in the second half.
City will face Stoke City who reached the final for the first time by scoring three times in the first half hour on the way to a 5-0 win over Bolton Wanderers.
In the Premier League, second-placed Arsenal were held to a 1-1 home draw by Liverpool, keeping them six points leaders United with six games to play. Both goals came from penalties deep into stoppage time.
Bundesliga leaders Borussia Dortmund cruised towards their first German championship since 2002 as they eased past Freiburg 3-0 to open up an eight-point lead with four games left.
First half goals from Mario Goetze and Poland's Robert Lewandowski put them in the driving seat before Kevin Grosskreutz added another late in the game to lift them to 69 points.
Second-placed Bayer Leverkusen were stuck in second place on 61 after slumping to a humiliating 5-1 defeat at Bayern Munich courtesy of a Mario Gomez hat-trick.
The win lifted the champions up to third on 55 points and kept their Champions League hopes alive.
AC Milan moved closer to a first Serie A title in seven years when they beat Sampdoria 3-0 while second-placed Napoli lost 2-1 at home to Udinese.
Those results left Milan six points clear of Napoli with five matches each to play.
Clarence Seedorf, Antonio Cassano and Robinho shared the goals for Milan. Napoli's defeat included a penalty miss by their Uruguayan striker Edinson Cavani, the championship's second-top scorer with 25 goals.
Second-placed Olympique Marseille were the weekend's big winners, coming back to beat Montpellier 2-1 while leaders Lille drew 1-1 with Girondins Bordeaux.
Marseille, who triumphed thanks to Taye Taiwo's 82nd-minute penalty, cut Lille's advantage to a point with seven games left.
Olympique Lyon, in third, lost 1-0 at Champions League hopefuls Paris St Germain.
Bottom side Arles-Avignon, on a measly 13 points from 31 games, were relegated after a 1-0 home defeat by Valenciennes.
Porto, who have already been crowned champions, beat Sporting 3-2 at home in Sunday's "classico" to stay undefeated with three matches to play.
Andre Santos put Sporting ahead with a deflected shot after 11 minutes, but Colombia striker Radamel Falcao turned the score around with headed goals in the 26th and 51st minutes.
Brazilian forward Walter scored a third on 87 minutes with a first-time finish and Sporting responded almost immediately thanks to a close-range shot by Chile playmaker Matias Fernandez.
Second-placed Benfica beat Beira-Mar 2-1 at home thanks to goals by defender Sidnei and Argentine forward Franco Jara.
The Dutch league is set for a dramatic finale with one point separating PSV Eindhoven, Twente Enschede and Ajax Amsterdam at the top and three games each to play.
PSV Eindhoven, 2-0 winners at Heracles Almelo, went top on goal difference from previous leaders Twente Enschede after the champions could only manage a 1-1 draw at Graafschap Doetinchem.
Third place Ajax Amsterdam came from behind to beat NEC Nijmegen 2-1 and are one point behind the leading pair. Ajax will host Twente on the final matchday on May 15.