Spanish club Real Madrid said the 24-year-old Wales winger had been signed pending a medical and Tottenham official Simon Felstein said the fee is 100 million euros.
"He is going to join Real Madrid and he has left us with great memories from last season which every Tottenham fan cherishes," Spurs manager Andre Villas-Boas told reporters after his side had lost 1-0 to Arsenal in the Premier League.
"He has moved on and we have moved on as well."
A statement from Real Madrid said Bale would "be tied to the club for the next six seasons".
"The player will be presented tomorrow, Monday September 2, at 1 p.m. (1100 GMT) at the Santiago Bernabeu stadium after having the relevant medical tests.
"Afterwards, Gareth Bale will take to the Santiago Bernabeu pitch for the first time in a Real Madrid shirt and will speak to media organisations in the press room."
In a statement Bale said it was the right time to leave Tottenham after six very happy years.
"I am not sure there is ever a good time to leave a club where I felt settled and was playing the best football of my career to date.
"I know many players talk of their desire to join the club of their boyhood dreams, but I can honestly say, this is my dream come true," he said.
Tottenham chairman Daniel Levy said the club had no intention of selling Bale.
"He is a player whose career we have fostered and developed and he was only a year into his new four year contract," Levy said on the club's official Twitter feed.
"Such has been the attention from Real Madrid and so great is Gareth's desire to join them, that we have taken the view that the player will not be sufficiently committed to our campaign in the current season.
"We have, therefore, with great reluctance (sold him) and do so in the knowledge that we have an exceptionally strong squad."
Image: Gareth Bale
Photograph: Matthew Horwood/Getty Images