The 28-year-old was reportedly the target of three Premier League clubs who were all keen on signing the former Real Madrid centre-back.
Newcastle had revealed their desire in re-signing Woodgate, but the other interested club was unknown.
But Woodgate, who has played 16 times for Middlesbrough this season, has decided to join Spurs.
"We are delighted to announce we have reached agreement with Middlesbrough for the transfer of Jonathan Woodgate," said a statement on Tottenham's official website.
It is believed that Spurs have paid Middlesbrough around £8m for Woodgate's services, who joined the club last season after an unsuccessful spell in Spain.