The first half was delayed by half an hour after a storm caused puddles of water to appear on the pitch, with the match also reduced to 40 minutes in each half.
At times the game became something of a lottery, players on both sides struggling to keep their footing on a surface that cut up badly as the game progressed.
The early stages were tight and tense, with neither goalkeeper forced into making a save, but Spurs took the lead after 25 minutes. Aaron Lennon attacked down the right wing before pulling the ball back to Sigurdsson. The Icelandic midfielder's shot deflected off John O'Shea to give Vito Mannone no chance.
Less than ten minutes later it was 1-1. Tom Huddlestone lost the ball in midfield for Spurs, and Jozy Altidore was able to easily put Cabral through on goal. The midfielder registered his first goal for the club with a tidy low finish into Heurelho Gomes' far post.
Two minutes before the break, Sunderland almost took the lead. Craig Gardner stepped up to take a free kick and Gomes was forced into a sprawling stop to parry away the ball.
Spurs started the second half brightly, with Jermain Defoe's introduction sparking a flurry of chances. Mannone twice parried the ball away from stinging efforts from the England international.
Two minutes after the first Defoe effort, it was his strike partner Emmanuel Adebayor who almost gave Spurs the lead. The Togolese forward took the ball from Clint Dempsey and chipped the ball towards goal, only to see Mannone tip over.
Sunderland had their own chances, however, with Altidore screwing a shot wide of Brad Friedel's goal and guilty of a fresh air kick when three yards out.
One worry for Spurs was the forced substitution of Jan Vertonghen, who left the field holding his knee and in some degree of pain.
It was Sunderland that took the lead with 15 minutes remaining. A corner was played into the area and Ezekiel Fryers was guilty of allowing Wes Brown to remain unmarked. The defender headed home with ease.
During the latter stages, Sunderland had chances to extend their lead. Friedel made a fabulous one-handed diving stop from Connor Wickham's first touch after replacing Altidore, and the American goalkeeper also saved low from El-Hadji Ba.
With a minute of the 80 remaining, Sunderland sealed the victory with a third. Substitute Karlsson was put behind a high Spurs defensive line, and he finished coolly past Friedel, cementing Sunderland's place in the final on Saturday.