The 34-year-old staff sergeant, whose identity was withheld, was drunk and punched the taxi driver in the face before taking the vehicle at 1.45am, Yonhap news agency quoted police saying.
The driver had asked the soldier to use another taxi after a minor collision with a motor scooter outside of Seoul, it said.
The sergeant then took the taxi and drove for about two kilometers before being caught by police.
"At the time of the detention, he had a blood alcohol concentration of 0.122%, a level which leads to the cancellation of his driver's license," Yonhap quoted an officer saying.
"He could face charges of beating, drunken driving and robbery."