The Battle of the Weser River, known as Idistaviso in ancient Rome, was fought in 16 AD between the Roman legions commanded by Nero Julius Drusus Germanicus, Emperor Tiberius nephew, and German tribes commanded by Arminius, or Hermann the Cheruscan.
15 AD : In reprisal for the massacre at Teutoburg Wald six years before, the Roman Army conducts a series of punitive expeditions East of the Rhine river, during which they reoccupy the valley of the Lippe River, retake the Eagle Standards of the lost legions, and give burials to the bones of their dead.
16 AD: Germanicus invades the Cherusci tribe heartland, seeking to destroy Arminius in pitched battle once and for all. Marching along the Weser River, Germanicus meets the combined armies of the Cherusci, Semnones and Langobardi waiting for them on the other side. After a cavalry fight, a bridgehead is firmly established and the entire Roman army  crosses the river to build a fortified camp on the East bank. After days of surveillance, Germanicus leads his men out of the trenches to join battle...
The battle:
In his campaigns, Germanicus carefully avoided ambushes, loading his army onto boats and using his father's canal system. After disembarking, the romans had been marching in a formation that kept one whole legion on each flank.
The Roman army was made up of 8 legions in total, or 60 000 legionaries and auxiliaries, 7500 cavalry and 5000 Batavian allies.
We don't know how many were left behind in the forts, nor the losses of the cavalry in the crossing of the river. We can assume that 20000 legionaries, nearly as many auxiliaries and perhaps 7000 cavalrymen were on the battlefield.
Arminius strength was estimated at 55000 men, most probably a mixture of veterans - those of Teutoburg Wald - and green troops.
Deployment :
Arminius formed his men into a giant arch, with one wing on the forests, and the other on the river. The Cherusci and Arminius himself held the center.
Germanicus deployed in a typical three line formation. The first line with auxiliaries and skirmishers, the second line with legionaries, his contingent of the Praetorian Guard in the center, and the third line with both auxiliaries and legionaries. Germanicus wisely sent his cavalrymen into the woods on reconnaissance.
Outcome:
The Germans charged the Romans. The Cherusci almost broke the center, but the auxiliaries held the line. In the meantime the German left and right wings collapsed, as the cavalry burst out of the woods. Finally the Cherusci were broken down, and a general route of the Germanic tribes followed.
The Romans got their revenge on Arminius for the massacre at Teutoburg Wald. Yet, it was not the decisive battle Germanicus had sought, because Arminius himself and many of his warriors escaped alive. 
Roman honour and prestige were restored, but Tiberius recalled Germanicus and ended the three year campaign. It is presumed that the emperor understood the land beyond the Rhine River was too poor to be a valuable part of the Empire and it did not justify the cost of permanent occupation. Yet the Rhine border was made secure for the ensuing two centuries. 
Germanicus returned to Rome with Arminius pregnant wife Thusnelda among the captives. She was exhibited in a triumph and presumably executed afterwards. Arminius son was sent to a gladiator school and died young. 
Arminius recovered from the blow, but unable to unify the tribes, he was eventually murdered by his relatives in 21 AD  
