The head-on crash happened near Bad Aibling, a spa town about 60km (37 miles) south-east of Munich.
The trains’ operator said both trains had partially derailed and were wedged into each other.
Emergency teams, some winched in by helicopter, worked for hours to free casualties from the wreckage.
Regional police said in a tweet (in German) that nine people had been killed and 100 injured, 50 of them seriously.
The drivers of both trains and two train guards were among those killed, regional broadcaster Bayerischer Rundfunk said, quoting police.
The cause of the collision is not yet known.
German Transport Minister Alexander Dobrindt, who visited the scene, said it was a “horrifying sight”.
“The drivers’ cabs of both trains are wedged into each other. One side of one train is completely torn open,” he told a news conference.
“The other train bored into it. Obviously both trains crashed into each other at high velocity. We suspect that both trains were travelling at around 100km/h (62mph)”.
He added: “The site is on a bend so we have to surmise that both train drivers had no visual contact before the crash and therefore crashed into each other largely without braking.”
Mr Dobrindt said the stretch of line had an automatic braking system designed to halt any train that passed a stop signal. Two of the three data recorders – “black boxes” – on board the trains have already been recovered, he said.
Bavarian Interior Minister Joachim Herrmann told the same conference it was “difficult to comprehend” how such a crash could happen given the amount of investment in railway safety following previous train accidents.
Regional train company Meridian said in a statement that “a tragic accident” had occurred on a single-track route between Rosenheim and Holzkirchen at about 07:00 local time (06:00 GMT)edia player help
Bernd Rosenbach, managing director of Bayerische Oberlandbahn, which operates Meridian trains, told reporters: “The accident is a huge shock for us. We are doing everything we can to help the travellers, relatives and workers.”
Technical manager Fabian Amini added: “Our thanks go to the emergency services and workers who gave their help so quickly.”
The scene of the crash is close to the Mangfall river in a hilly and densely wooded region. Casualties were being evacuated by boat and by helicopter.
Several hundred emergency services personnel were at the scene. Rescue teams from nearby Austria were also helping, local media said.
By midday, police said all casualties had been removed from the wreckage.
The Munich blood bank issued an appeal for blood donors on its Facebook page.
Although the trains were carrying commuters, local carnival holidays meant no schoolchildren were on board, according to reports.
Roads around the scene have been closed and the railway line between Holzkirchen and Rosenheim is blocked.