The suspect, identified as Antonio Taylor, was charged with first-degree assault of a law enforcement officer, armed criminal action, and being a felon in possession of a weapon.
The incident happened around 11 a.m. in the 300 block of New Ballwin Road. The officer, a 9-year police veteran, pulled over a vehicle on a routine traffic stop. As the officer returned to his squad car, the suspect exited his car and shot the officer.
St. Louis County Prosecuting Attorney Bob McCulloch said the suspect walked up to the officer, who by this time was on the ground, and shot him again.
The suspect fled the scene before leaving his car abandoned. He was apprehended after a short foot pursuit.
The officer was rushed to a local hospital for treatment. He'd been with the Ballwin Police Department approximately 2 years prior to the shooting.
Taylor, who was arrested about 30 minutes after the shooting, remains in custody on $500,000 bond.
Investigators said Taylor was on parole for federal weapons violations. His record includes weapons offenses in Missouri and California, as well as a stolen car in Oklahoma.
The City of Ballwin has a population of nearly 30,000. It is located in west St. Louis County, along Manchester Road west of Highway 141.
KPLR 11 News will have more information on this story as it becomes available.