Train close control at genuine speed by adding a direct opponent. The race forces a pace the player would not select alone, and the finish at the end tests whether control survived it.
Set two parallel lanes of four cones with a turning cone at the far end, and a goal at the starting end. Two players race at once, one per lane. Slalom out through the cones, turn, come back through, and finish at the goal from around eighteen metres. First to score wins the heat. Run the heats continuously with the other pair recovering, and swap lanes each round so neither is an advantage.
Cone dribbling has a poor reputation among coaches, largely deserved. A player weaving through static cones at a comfortable pace is practising something that does not exist in a match, and doing it in a queue for twenty minutes is close to a waste of a session.
The race fixes the largest of those problems. Left alone, a player picks a speed at which he does not lose the ball, which by definition is a speed at which his control is not being tested. Put somebody in the next lane and he goes faster than that, immediately, without being told. The errors that follow are the useful part: they show exactly where the ceiling of his control is.
The finish at the end is doing more than adding fun. It means the run has a consequence, so a player who arrives having lost the ball, or arrives out of control and off balance, is visibly punished. Racing to a line rewards speed alone; racing to a finish rewards speed that has kept the ball usable, which is a different and better thing.
The honest limitation is that this remains a closed exercise with static obstacles, and it should be treated as a technical block for younger players rather than a substitute for one-against-one work. Used that way, for ten or fifteen minutes, it produces a very high number of touches at speed with genuine competitive intensity, which is hard to get any other way at that age.
Save it to your private drills, then change the animation, adjust positions, swap equipment, or drop it into a session block. Or start from a blank pitch and build your own.