The two sides battled to a 1-1 tie in regular time and overtime at the Stade de Suisse in Bern.
Basel opened the scoring in the 71st minute when Markus Steinhöfer put the team ahead.
Izet Hajrovic answered back for Grasshopper just four minutes later.
After 120 minutes of play, the game was decided in dramatic fashion on penalty kicks, with Grasshopper scoring four goals to Basel’s three.
In recent history, Basel has dominated the Swiss Cup, winning six times in the last 12 years.
And it looked to be Basel’s year again after the team beats Spurs in the Europa Cup before being knocked out by Chelsea in the semifinals earlier this month.
But Grasshopper prevailed on Monday, extending the Zurich team’s record for the most Swiss Cup wins in history.
The club won the first two titles back in 1926 and 1927, when the competition first started.