Max Verstappen will replace Daniil Kvyat at Red Bull from the Spanish Grand Prix with the Russian taking the Dutchman's seat at Toro Rosso.
Kvyat collided with Sebastian Vettel twice at the start of the Russian GP last weekend, with the second contact resulting in the Ferrari ending up in the wall.
After the race, Red Bull boss Horner said Kvyat "accepts he made a mistake" and apologised to the team.
But following talks, Red Bull has taken the decision to drop Kvyat in favour of Verstappen from the Spanish Grand Prix onwards.
"Max has proven to be an outstanding young talent," said Red Bull boss Christian Horner.
"His performance at Toro Rosso has been impressive so far and we are pleased to give him the opportunity to drive for Red Bull Racing.
"We are in the unique position to have all four drivers across Red Bull Racing and Toro Rosso under long term contracts with Red Bull, so we have the flexibility to move them between the two teams.
"Dany will be able to continue his development at Toro Rosso, in a team that he is familiar with, giving him the chance to regain his form and show his potential."
Verstappen is believed to have a three-year contract with the Red Bull family, which runs until the end of 2017.
It is understood this move is seen as an opportunity to evaluate him sooner with a view to sign him longer term if he delivers.