Rohit Sharma's quickfire half-century went in vain as Rising Pune Supergiant shocked table-toppers Mumbai Indians by three runs, in the Indian Premier League, in Mumbai on Monday.
Rohit blasted 58 from 39 balls but Mumbai finished on 157 for eight in reply to Pune's 160 for six.
Ben Stokes bowled a good spell to claim two for 21 in four overs and also took the important catch of Hardik Pandya in the final over, while Jaydev Unadkat picked up two for 40.
Pune have won both their matches against Mumbai this season, while also ending their run of six consecutive victories.
Needing 24 off the last 12 balls, Ben Stokes bowled an economical penultimate over and conceded just seven runs, leaving Rohit Sharma's team with an onerous task of scoring 17 runs off the final six balls.
Bowling the last over, Jaydev Unadkat dismissed Hardik Pandya with his first delivery, but Rohit smashed the bowler for a six to bring the equation down to 11 from four balls.
The left-arm seamer, though, had the last laugh as he had Rohit caught and bowled for a brilliant 39-ball 58.
Harbhajan Singh struck the last ball for a six, but that was not enough for the home team.
Earlier, Mumbai came back strongly after Pune sound start and restricted the visitors to 160 for six in their 20 overs.
Openers Ajinkya Rahane (38 in 32 balls) and Rahul Tripathi, who top-scored with a 31-ball 45, gave the Pune innings a solid launchpad by putting on 76 runs in less than 10 overs, but once the partnership was broken Mumbai had things under control.
Captain Steve Smith made 17, Mahendra Singh Dhoni, who had cracked a 34-ball 61 not out in a last-ball win two days ago, struggled in making seven while another big-hitter, Ben Stokes, too fell for 17.
Manoj Tiwary struck a breezy 22 off 13 balls with four boundaries towards the end, but the final total appeared below par.
For Mumbai, leg spinner Karn Sharma was easily the pick with the wickets of both the openers at a crucial time, while Harbhajan Singh arrested the early run-flow to finish with fine figures of 1 for 20. Jasprit Bumrah bowled well again at the death to finish with two for 29.
Meanwhile, Harbhajan also claimed his landmark 200th T20 wicket when he dismissed Smith in the 13th over.
Rahane, not in the best of form going into the game, and Tripathi got the visitors off to an impressive start.
Rahane drove straight, played towards covers and whipped the ball to the mid-wicket region for four fours and a six during powerplay, while Tripathi tried cross-batted shots.
Tripathi easily smacked Karn, playing his first game of the season in place of the injured Krunal Pandya, for a six over long on and the duo's exuberance resulted in Supergiant racing away to 48 in the first six overs.
The eighth over of the innings from Mitchell McClenaghan was very fruitful for the visiting side as 14 came off it, including three boundaries off the left-arm pacer, who had helped MI defend a small total of 142 against Delhi Daredevils just two nights ago.
At the halfway stage of the innings, Pune were comfortably placed at 84 for one.
Sharma packed off Tripathi as the batsman, who smacked two sixes and three fours, stepped out and lofted to deep extra cover for Kieron Pollard to complete a simple catch.
The bowler should have had the wicket of Smith, too, in the same over but for a dropped catch at deep square leg by Harbhajan. The Supergiant captain was on eight.
Smith, who had made 84 not out to lead Pune past the Mumbai total of 184 for eight in the first leg on April 5, struck a four off the next ball.
But the veteran off-spinner made quick amends by clean bowling Smith when he hit the top of the off stump with a ball that turned just a bit and came slower than the batsman had expected it to.
Three wickets in quick succession, between the 10th and 13th overs, pegged back Pune. Johnson cleaned up Stokes in his final over as the left-handed batsman's heave failed to connect and then Dhoni dragged an attempted pull shot off Jasprit Bumrah on to his stumps.
Pune added 40 in the last five overs and 18 in the final two.