Aaron Saucedo, 23, had already been charged with murder in connection with a killing in August 2015, police say.
Now he has been linked to the deaths of eight other people, between January and July 2016.
Police say they have not identified a motive but believe he acted alone. His lawyer has not commented.
The 2015 victim was a 61-year-old man who had dated the suspect's mother, Phoenix Police Chief Jeri Williams said.
The other victims, including a 12-year-old girl and a 55-year-old woman, seem to have been targeted at random.
"Today is a good day in the city of Phoenix," Mayor Greg Stanton said.
Police gave few details on how they linked the man to the killings, which stopped last July amid extensive media coverage.
But they said the evidence included surveillance video, witness statements and ballistics material.
He faces 26 additional felony counts, including multiple counts of homicide, aggravated assault and drive-by shootings.
The Maricopa County attorney has not yet decided which charges to formally bring against him.