Three-time champions Mumbai Indians have stayed afloat in the Indian Premier League after beating Shane Watson's Chennai Super Kings by eight wickets.
Mumbai restricted Chennai to 5-169 then overhauled them with two balls remaining for only their second win in seven games.
The Indians need at least another five wins in their last seven matches to stand a chance of qualifying for the play-offs.
"We wanted this win desperately but we also wanted to stay calm," said Mumbai captain Rohit Sharma, man of the match for his 56 not out.
"We batted, bowled and fielded well, and this game will give us confidence going ahead. We are very much alive."
After openers Suryakumar Yadav (44 off 34 balls) and Evin Lewis (47 off 43 balls) slammed the Chennai attack, Sharma scored a 31-ball half-century and finished with an unbeaten 56 off 33. With him at the end was Hardik Pandya (13).
Yadav and Lewis combined for an opening stand of 69 off 59 balls when Yadav was caught at cow corner off Harbhajan Singh.
Sharma then came in and added 59 off 38 balls with Lewis.
Lewis hit three fours and two sixes, and Sharma struck six fours and two sixes.
Mumbai were in sight of victory when Lewis holed out off Dwayne Bravo in the 17th over.
Sharma hit four boundaries off Shardul Thakur in the penultimate over and finished the job.
Earlier, Suresh Raina hit an unbeaten 75 to help Chennai reach 5-169 after being put into bat.
Despite losing Watson early for 12, the in-form Ambati Rayudu (46 off 35 balls) gave his side another quick start. He added 71 runs with Raina.
Raina reached his half-century off 35 balls.
Despite their second defeat, Chennai remain on top of the table.
"We were short by 10-15 runs," captain Dhoni said. "Mumbai bowled really well in the middle overs. In the league stage, you will lose (at some point). We have won quite a few games and this defeat will help us stay humble."
Watson's four overs went wicketless for 41 runs.
Australian viewers can watch the 2018 season of the IPL exclusively on Fox Sports