The Trotters move up a place but remain in the bottom three despite the much-needed win while Rotherham’s latest defeat leaves them just one point above the drop zone.
Gary O’Neil had not scored since November 2016 until he popped up with his first for the Trotters in a Betfred Championship relegation scrap against Rotherham.
Sammy Ameobi fired Wanderers in front after 35 minutes only for Will Vaulks to equalise for the visitors three minutes later.
After watching his team fail to win for an eighth successive game, Rotherham boss Paul Warne said: “We had pockets of really good play but not enough.
“Going in at half-time at 1-1 in a game of few chances I thought we would be stronger second half.
“Did we do enough to win the match? I am not sure. I don’t think we deserved to lose.
“We got dragged into a little bit the way they were playing.
“Our goal came from the fact we switched the play really well, got the free kick and put a good ball in.
“I couldn’t see us losing. But unfortunately we are conceding goals which is something we need to look at.
“We have all got to try and get better because we want to win football matches. But the effort is unquestionable.
“However, there were times on the ball when we didn’t make enough good decisions. We might have made two but we didn’t make three.
“Or we made three but didn’t make four so we didn’t create enough chances to win a match.”
Bolton won at the 14th time of asking and Bolton boss Phil Parkinson said: “I got some good presents. But not one thing was better than these three points. It’s been tough waiting for this win.”
Bolton Wanderers: Alnwick, Lowe, Wheater, Beevers, Taylor (Olkowski 67), O’Neil, Wilson, Joe Williams, Ameobi (Buckley 90), Doidge, Donaldson (Magennis 78). Unused substitutes: Vela, Noone, Hobbs, Matthews.
Rotherham United: Rodak, Vyner, Ajayi, Robertson, Mattock, Forde (Williams 66), Towell, Vaulks, Newell (Taylor 74), Smith, Proctor (Wiles 83). Unused substitutes: Wood, Price, Manning, Raggett.
Referee: J Simpson (Lancashire).