Vadodara Warriors equalised 10 minutes into the second half, with Manvir Singh drilling a low shot into the bottom corner from 12 yards. With the score locked at 1-1 until the end of 90 minutes, the final went into penalties, where Karnavati Knights converted all five of them to grab a 5-3 victory.
Daniel Patel scored the winning penalty after goalkeeper Vishal Dube came up big to save Vadodara Warriors' Mohammed Rizwan's spot-kick.
The six-team Gujarat Super League began on May 1 and was played in a single round-robin format. Karnavati Knights remained unbeaten with three wins and two draws, while Vadodara Warriors joined them in the final as runners-up with 10 points.
Ahmedabad Avengers and Saurashtra Spartans missed out narrowly, finishing third and fourth, respectively, with nine points each. Gandhinagar Giants were fifth with three points, while Surat Strikers ended up bottom with a solitary point.