The accident, described by one passenger as a "nightmare", happened in a tunnel close to Eur Palasport station on the metro's B line.
Firefighters told Ansa that the trains "bumped" into each other.
Twenty-one people were injured but none critically, Giuido Improta, Rome's executive councillor for transport department, told the news agency.
“Now we need to understand the dynamics [of how it happened], it's certainly bizarre,” he added.
“Surely it was a human error.”
Francesco, a passenger on the train, told Ansa that the scene was like "something you'd see in films".
"It was a nightmare...it could have been a massacre.
"We were in the tunnel when there was a sudden stop. I fell to the ground along with other passengers and started crawling along the carriage looking for a way out."
He said passengers were "frightened" and "screaming".
"After several minutes we got off and walked across the tunnel. I saw several people, injured and many terrified."