Keane's goal, which quickly followed Teddy Sheringham's equaliser, had threatened to sentence his old club to defeat until Viduka slotted home a penalty for his ninth goal in five league games.
Leeds unsurprisingly kept the side which demolished Charlton 6-1, while Spurs demoted Chris Perry to the bench and welcomed back Anthony Gardner after being out for nine weeks with a hamstring injury.
Leeds had won their last five home games against Spurs who had managed just one win in their last 12 visits.
Leeds should have had an 18th minute penalty when Gardner handled, but after Viduka twice went close he opened the scoring in the 31st minute.
Eirik Bakke and Harry Kewell made the running on the right and Kewell's cross was swept in from eight yards by the in-form Viduka.
Spurs had taken a back seat up to then, but Viduka's goal spurred them into action and they grabbed two goals in as many minutes.
Darren Anderdon's 37th minute corner was headed into the goalmouth by Goran Bunjevcevic for Sheringham to stoop low and head the equaliser.
Then Leeds' defence was in dreamland as Keane gained possession on the right and weaved his way past Ian Harte and Bakke before shooting low into the far corner against his old club.
Leeds tried to pull the game round by replacing Danny Mills with James Milner in the 63rd minute and the equaliser arrived 13 minutes later.
Spurs keeper Kasey Keller brought down Kewell on the right, just inside the box and Viduka casually beat him from the spot.