Pierre-Emerick Aubameyang hit a brilliant brace as Arsenal beat holders Manchester City to reach the FA Cup final.
Pep Guardiola's City were heavy favourites to win this semi-final and reach yet another final but they squandered both possession and chances as Aubameyang struck in either half to secure victory for the Gunners.
The record winners of this competition, Arsenal will now be looking to lift the FA Cup for a 14th time when they face either Chelsea or Manchester United in the final on 1 August.
Arsenal had lost their last seven games against City but who better than Guardiola's former assistant to concoct a blueprint to turn the tide?
Arsenal's last victory in this fixture was the FA Cup semi-final meeting in 2017 but Mikel Arteta's side are now made of sterner stuff.
A win over Premier League champions Liverpool on Wednesday night set them up for this contest but instead of being gifted their goals by defensive errors, Aubameyang's unerring finishing in his first appearance in the competition this season proved to be the difference.
The game had started as expected, with City in control of possession and an Arsenal defence looking nervy.
Dani Ceballos was robbed of possession inside his own half, leading to Raheem Sterling's low cross being cleared awkwardly behind by Kieran Tierney.
Shkodran Mustafi was the next to lose the ball - this time just yards from his own goal, although Sterling could not take advantage.
Despite seeing so little of the ball in the opening stages, Aubameyang should have put Arteta's side ahead. The Arsenal captain was played onside by Laporte as he collected David Luiz's delivery but shot straight at Ederson.
He made amends just moments later, finishing with aplomb at the back-post following a fine Nicolas Pepe cross.
Neither defence was particularly sturdy, Hector Bellerin playing a blind pass straight to the feet of De Bruyne, whose fierce drive was blocked by Granit Xhaka.
At the other end, Kevin De Bruyne played a rare loose ball and Arsenal almost capitalised, only for Aubameyang to misplace a pass back into the box.
Another pacey counter-attack for Arsenal saw them earn a corner which Shkodran Mustafi headed towards goal, forcing Ederson to tip over as the Gunners went in ahead at the break.
Guardiola sent his players out early for the second half and they were again quicker out of the blocks as Sterling passed up a fine chance to level, turning a De Bruyne pass wide of goal.
City finally managed to force Emiliano Martinez into meaningful action as he got down low to keep out a Riyad Mahrez strike.
With pressure building, De Bruyne sent a free-kick inches wide of the post just after the hour.
Sterling wanted a penalty when he was challenged by Mustafi, but the VAR sided with referee Jon Moss and ruled it not to be a foul.
The resulting corner found its way to Sterling at point-blank range but the ball bounced off the England forward and into Martinez's gloves.
City skipper David Silva was the next man to waste a fine chance, side-footing another De Bruyne wide from six yards.
They would soon be made to pay for their profligacy in front of goal as Arsenal doubled their lead with 20 minutes remaining.
Aubameyang, played onside by Benjamin Mendy, raced onto Tierney's ball over the top before coolly finishing for his second goal of the evening.
City could not respond as the Gunners increasingly broke up play by going down for treatment and seeing out seven minutes of added time with few problems.