He first put Valencia ahead on 29 minutes with a thumping header before being booked and then red carded in the space of five minutes just before the break.
Mangala was harshly adjudged to have pulled back Luis Suarez in the box – Barca took a 2-1 lead from the resulting penalty at the Nou Camp – though the 10-man visitors still had time to level and go in 2-2 at half-time.
Further goals from Messi and Gomes secured a 4-2 win for the Catalans while Valencia remain well clear of the bottom three.
Moving to home soil, Jason Denayer continued his run in the Sunderland side, playing the full 90 minutes and helping them keep a clean sheet against Burnley.
The 21-year-old has now made 22 appearances for the Black Cats this season after initially having to fight his way into David Moyes’ first XI. The point means the Wearsiders remain bottom, seven points off safety.
Aaron Mooy was Huddersfield’s best player as they lost 4-0 to Bristol City. It was a disappointing night for the Terriers – but Mooy was the one bright spot.
The result is a dent to Huddersfield’s automatic-promotion chances. They sit third, six points off second-placed Brighton who also lost at the weekend.
Patrick Roberts came on for the final 20 minutes as Celtic beat Dundee to move within one win of their sixth straight Scottish Premiership title.
Moving across the North Sea, FC Twente continued their good form, beating Roda 3-0 away from home. Enes Unal scored their third – his 13th in 26 appearances this season – assisted by Yaw Yeboah, who came off the bench for the final 15 minutes.
NAC Breda moved into seventh spot in the Eerste Divisie table after a thrilling 4-3 win over second-placed Ajax II. Manu Garcia scored after 44 minutes to bring Breda level just before the break in a game that James Horsfield also started. Brandon Barker came on at half-time but had to be replaced by fellow on-loan Blue Thomas Agyepong on 78 minutes after picking up a knock. Ash Smith-Brown was an unused sub.
Staying in Holland, Sinan Bytyqi didn’t play in Go Ahead Eagles’ 3-1 home loss to PEC Zwolle leaving the Deventer-based side rock bottom of Eredivisie. Shay Facey was not involved in Heerenveen’s 2-1 home defeat to Feyenoord.
Back in La Liga, Samir Nasri completed a miserable week as Sevilla were beaten 3-1 by Atletico Madrid, reducing the gap between the sides to just two points in the inevitable race for third spot. Nasri played the full game but could do little to change the outcome.
Marlos Moreno was absent from Deportivo’s damaging 1-0 home defeat to Celta Vigo. Bruno Zuculini was an unused sub for Hellas Verona who drew 1-1 with Pro Vercelli - whose goal came courtesy of former City striker Rolando Bianchi!
Staying in the Spanish Segunda Division and Pablo Maffeo played for 77 minutes of second-placed Girona’s 2-1 home loss to third-placed Cadiz. .
Girona remain well clear of Cadiz but missed a golden chance to all-but secure promotion. In the same league, Angelino played the full 90 minutes as Mallorca slipped closer to the Spanish third tier with a 2-1 loss to Huesca.
In Serie A, Joe Hart’s Torino continued their steady if unspectacular season with a 2-2 draw at home to Inter Milan, while Olivier Ntcham’s Genoa were beaten 1-0 away to AC Milan with the City midfielder playing the full game.
More updates next week.