EXCLUSIVE: Alessandro Diamanti talks Pirlo tonight on The Early Kick-Off | available via Foxtel, Kayo Sports, Fetch TV & beIN SPORTS CONNECT
Goalkeeper Joe Gauci saved spot-kicks from Matt Simon and Oliver Bozanic, and Adelaide went ahead between those dramatic moments when Kusini Yengi struck in the 48th minute.
Gauci, 20, had kicked away Simon's powerful strike and dived full length to push away Bozanic's penalty, but the goalkeeper could not defy the Mariners all night and was finally beaten in the 72nd minute.
Captain Bozanic found space on the edge of the penalty area and drilled a powerful drive into the left corner for an equaliser, and four minutes later Alou Kuol slotted in after Gauci was beaten to the ball by Josh Nisbet, who cut back for his fellow substitute to convert.
The result ended Adelaide's six-game winning streak, but the Reds stay second in the table.
Third-placed Melbourne City's six-game run of victories was halted by state rival Western United, which snatched a 2-1 win despite falling behind early on.
Craig Noone struck from close range in the 12th minute after combining cleverly with Jamie Maclaren.
But Western United drew level in the 61st minute when Besart Berisha volleyed across goal for Lachlan Wales to head home against his former team.
Substitute Alessandro Diamanti then set Wales clear on the right flank with a terrific pass, and the scorer of the first goal repaid the earlier favour from Berisha by feeding his team-mate inside the Melbourne City penalty area.
Berisha turned sharply and smashed a low shot in off the right post for the 66th-minute winner, lifting Western United three places to seventh in the table.