Crystal Palace stunned Fulham at Craven Cottage as they won their fifth match in a row to reach the semi-finals of the FA Cup.
Fulham were on top for the first 30 minutes but could not take advantage of the dominance, with Rodrigo Muniz going closest for the home side.
The Eagles could barely get out of their half, before Eberechi Eze gave the visitors the lead against the run of play with an excellent strike in the 34th minute.
The England international cut in from the left and curled a beautiful low shot around Leno and in off the far post.
Eze, who scored his first England goal against Latvia in the recent international break, then had a huge part to play in the second goal when his cross was headed in at the near post by Ismaila Sarr.
Willian forced Dean Henderson into a good save but Marco Silva’s side couldn’t find a way back into the match, before Eddie Nketiah added a third, slotting the ball through Leno’s legs.
The win means Palace have won their last five matches in a row in all competitions and are in the last four of the FA Cup for the first time since 2022.
Nottingham Forest won a third straight FA Cup penalty shootout to beat Brighton and reach the semi-finals for the first time in 34 years.
Goalkeeper Matz Sels was the hero for the visitors, saving Jack Hinshelwood and Diego Gomez’s spot-kicks as Forest won the shootout 4-3 after the match had finished goalless.
In a drab tie that lacked quality throughout, there was nothing to separate the two teams after 120 minutes at Amex Stadium.
Brighton had looked the likelier side to snatch a winner late on – and Sels made a superb save to keep out a bullet header from Gomez in extra time.
Joao Pedro then thought he had won it at the death for the hosts after bundling in Pervis Estupinan’s delivery, but the goal was ruled out for offside and the match went to a shootout.
After two big saves from Sels, it was Forest captain Ryan Yates who stepped up to fire the club into their first FA Cup semi-final since 1991.
Forest, who beat Exeter City and Ipswich on penalties in the previous rounds, will discover their opponents when the draw takes place on Sunday.
Marcus Rashford broke his four-month scoring drought to send Aston Villa into the FA Cup semi-finals with victory over Preston at Deepdale.
The on-loan forward’s last goals came for Manchester United against Everton in December.
But after a few wasted opportunities against the competition’s last remaining Championship outfit, Rashford finally found the target when he tapped home Lucas Digne’s 58th-minute cutback.
Five minutes later Rashford kept his nerve to send David Cornell the wrong way with his penalty after Morgan Rogers had been fouled by Andrew Hughes.
Rashford’s first goals since his double against Everton on 1 December ensured Villa retain hopes of winning the FA Cup for the first time since 1957, if they can get past Crystal Palace in the semi-finals.
Preston battled hard but a clear gulf in class was only underlined by the absence through injury of first-choice goalkeeper Freddie Woodman and on-loan defender Kaine Kasler-Hayden, who was unable to play against his parent club.
Once in front, Villa tightened their grip and Jacob Ramsey smashed in a third from the edge of the area 19 minutes from time, with Digne again the provider as Villa reached the last four for the first time in a decade.
Manchester City kept their trophy hopes for this season alive by coming from behind at Bournemouth to set up an FA Cup semi-final against Nottingham Forest.
Evanilson’s scrambled 21st-minute finish put the Cherries ahead at half-time and left City boss Pep Guardiola facing the prospect of ending a campaign empty-handed for the first time since 2016-17, his debut season at the club.
Erling Haaland had a first-half penalty saved by Kepa Arrizabalaga and wasted two other golden opportunities as City struggled for rhythm in the face of Bournemouth’s intensity.
But Guardiola worked his magic at the break by sending on Nico O’Reilly for Abdukodir Khusanov, and four minutes into the second half the 20-year-old – operating at left-back – created the equaliser with a perfect cross for Haaland to turn in at the far post.
Another change, this time enforced, allowed City to go ahead after 63 minutes. O’Reilly played in Omar Marmoush, just on for the injured Haaland, and the Egypt attacker’s strike crept under Kepa who should have done better.