Investigators say the officer pulled over the suspect in the Haight Ashbury area at about 2:00 a.m..
They say the suspect partially pulled the policeman into the car and drove off at a high rate of speed dragging the officer and running him into several parked cars.
Ultimately the suspect stopped and ran off on foot. He was arrested near his Twin Peaks area home.
He faces several charges, including assault with a deadly weapon on an officer.
The officer was taken to the hospital with what investigators say are non-life threatening injuries.