Theo Walcott will join Southampton on a two-year deal this summer.
The 32-year-old forward, a former academy graduate, returned to St Mary's on a season-long loan last year and was set to become a free agent at the end of the campaign due to his Everton deal expiring.
Walcott has scored three Premier League goals for Ralph Hasenhuttl's side so far this season, including in the 3-1 win against Fulham on Saturday.
.@SouthamptonFC is a club that means so much to me, and it has been incredibly special for me to have spent this season back at St Mary’s.— Theo Walcott (@theowalcott) May 18, 2021
But to now have the opportunity to return for a further two years means such a great deal to me, both personally and professionally. pic.twitter.com/IWxHLTMwaW
"I'm not sure I can properly express how happy I am about this," Walcott said.
"Southampton is a club that means so much to me, and it has been incredibly special for me to have spent this season back at St Mary's.
"But to now have the opportunity to return for a further two years means such a great deal to me, both personally and professionally."
Walcott made his debut for Southampton at the age of just 16 in 2005, before moving on to Arsenal and amassing 47 England caps.
He moved to Everton in 2018 on a three-and-a-half-year contract and scored 10 goals in all competitions before his return to the south coast last year.
Live Premier League
Hasenhuttl said: "Theo has been a very good influence for us this season.
"He is a very professional player who does things in the right way and has a very positive impact not only on our young players but on the dressing room as a whole."
Southampton sit 14th in the Premier League table and host Leeds on Tuesday, live on Sky Sports, before they visit West Ham on the final day of the season this Sunday.