Sandra Sandiford, 49, left the Martin's along the 10200 block of Staples Mill Road with several hundred dollars worth of groceries she did not pay for, Henrico Police spokeswoman Lt Linda Toney said.
When workers tried to stop Sandiford, the woman kept walking away, police said.
Sandiford crossed Staples Mill Road where she walked up to a pick-up truck sitting at a red light at Warren Road.
She threw her groceries into the truck and climbed inside, according to police. An off-duty Henrico Police Officer was driving the truck.
He turned off the truck when Sandiford got inside.
"Ms. Sandiford took the keys, turned the truck back on, attempted to put the truck in gear, and made threatening statements to the officer," police said. "The officer and a witness were able to gain control of Ms. Sandiford and waited for officers to arrive."
The crime happened Monday about 1 p.m., police said.
Sandiford is charged with grand larceny and carjacking.