The siege progressed slowly, and on 6 July the relief force reached
Minden, where they were joined by additional cavalry commanded by
Geleen. Meanwhile, Brunswick was reinforced by Swedish and Hessian troops led by
Knyphausen,
Torsten Stålhandske and
Melander. Their combined army of 7,000 infantry and 6,000 cavalry marched out to meet Bönninghausen, leaving only a few hundred men to continue the siege. Late in the afternoon of 7 July, the two armies made contact near
Hessisch-Oldendorf, approximately 20 kilometres northwest of Hamelin. The Swedish-German troops formed up on a
plateau northwest of the town, their left in front of Oldendorf commanded by Knyphausen, Brunswick in the centre, then Melander on the right anchored on the nearby village of Barksen. They were shielded by woods on either flank, with a stream running along their entire front that negated Bönninghausen's superior numbers of infantry. The latter deployed his men 500 metres away, placing himself with the reserve in the rear, Geleen commanding the centre, with Gronsfeld and Merode on the right and left respectively. The battle opened at 7:00 am with an artillery barrage, although this had relatively little impact. Shortly after 9:00 am, Gronsfeld ordered his troops to assault Swedish infantry under
Lars Kagg, but they quickly lost momentum in the woods and were counter-attacked on both flanks. The more mobile Swedish
field artillery allowed Melander to provide Kagg with close range support, unlike their opponents, while they were simultaneously outflanked by Brunswick's cavalry. After two hours of fighting, the Imperial troops began to fall back and Merode was killed sometime after 11:00 am. The reserve fled without firing a shot, and fighting ended around 2:00 pm. Although his rearguard managed to hold off the pursuit, Bönninghausen lost over 3,000 dead or wounded, plus another 1,000 taken prisoner, against an estimated 700 casualties for Brunswick's army. Other sources put Imperial losses at over 6,000, those of the allies under 300. ==Aftermath==