Police responded around 12:35 p.m. to a report of a suspicious person in the 500 block of Castro Street.
When officers arrived in the area, the suspect ran away and got into a car near 18th and Castro streets.
An officer was dragged by the getaway car when the suspect tried to evade authorities.
The officer declined medical treatment at the scene and is expected to survive his injuries, police said.
The suspect was able to drive away in the car.