With five balls left in the final over, Kolkata Knight Riders needed 28 runs to win, with a victory for Gujarat Titans looking imminent, especially after Rashid Khan took a hat-trick. But Rinku Singh smashed five successive sixes in the last five balls off Yash Dayal's final over to complete the greatest heist in the history of IPL, giving Kolkata a memorable three-wicket victory.

After fifties from B Sai Sudharsan and Vijay Shankar took Gujarat to 204/4 in 20 overs, Venkatesh Iyer smashed 83 off 40 balls and shared a 100-run partnership off 55 balls with captain Nitish Rana to put Kolkata on course to victory. But Rashid's hat-trick in the 17th overturned the game Gujarat's way before Rinku brought in another twist through his unbeaten 48 to seal victory for Kolkata.

Rahmanullah Gurbaz began by pulling Josh Little for six and taking a four off Mohammed Shami. But Shami dismissed him with a short ball in the third over, with Dayal charging in from short leg holding on to the catch and avoiding a collision with substitute keeper KS Bharat. Little sent back N. Jagadeesan in the fourth over by having him pulling straight to deep square leg.

Iyer, coming in as an impact player for Suyash Sharma, got off the mark with an uppercut flying over the third man for six. Every shot coming from his bat was finely middled -- like the punch off Shami, executing a deft shot off Alzarri Joseph and pulling off Dayal to hit a boundary each in the last three overs of Power-play.

After the field restrictions were lifted, Iyer pulled Dayal for a four and six in the seventh over. In the next over, Rana smashed Alzarri Joseph for two sixes -- a pull over square leg was followed by a cut over backward point.

Rashid brought himself on in the ninth over to stem the run-flow. But Iyer slog-swept him for six, followed by Rana pulling him for four in the 11th over. In the next over, Iyer reached his fifty in 26 balls by flicking Dayal past short fine leg for four, followed by carting him for a brace of sixes over square leg and long-off.

Boundaries continued to flow for Kolkata as Rana brought out the sweep and reverse-sweep against Rashid in the 13th over. But Joseph broke the century-stand in the next over by having Rana chipping straight to mid-off.

Iyer continued to keep Kolkata in the hunt, hitting Little for two fours in the 15th over, before ending the over with a clean swing through the line over long-off for six. His blistering knock came to an end in the next over when he holed out to long-on off Joseph.

The crowd suddenly found its voice back and that got louder in the 17th over when Rashid had Andre Russell caught behind off an inside edge, Sunil Narine caught at deep mid-wicket and trapped Shardul Thakur lbw with a googly to complete a sensational hat-trick.

But Rinku had other ideas -- hitting Little straight down the ground for six and pulling him through square leg for four in the 19th over. With 29 needed off the final over, Rinku feasted on poor balls from Dayal by smashing a hat-trick of sixes over wide long-off, backward square leg and long-off. He then hit successive sixes over the long-on fence to give Kolkata an improbable victory.

Brief scores:

Gujarat Titans 204/4 in 20 overs (B Sai Sudharsan 53, Vijay Shankar 63 not out; Sunil Narine 3-33, Suyash Sharma 1-35) lost to Kolkata Knight Riders 207/7 in 20 overs (Venkatesh Iyer 83, Rinku Singh 48 not out; Rashid Khan 3-37, Alzarri Joseph 2-27) by three wickets