Carlos Edwards scored his first goal in two years to boost Ipswich's bid to beat the npower Championship drop and dent Bolton's play-off charge.
The veteran winger struck with just two minutes to go as Bolton's five-match winning streak shuddered to a halt.
Ipswich had created the better chances but a tight game was meandering towards a goalless draw until Edwards tucked in a cross from substitute Jay Emmanuel-Thomas.
Edwards had almost opened the scoring with the first opportunity of the match in the 13th minute when Andy Drury crossed to the far post, but he planted his header into the side-netting.
Drury then got on the end of a cross from David McGoldrick, but his header was too close to Bolton goalkeeper Andy Lonergan.
Daryl Murphy should have put the hosts ahead after 23 minutes but he slipped as he tried to get onto the end of McGoldrick's low cross and his effort rolled wide.
Bolton were content to try to hit Ipswich on the break but were unable to create any clear-cut chances in the first half, instead being restricted to long-range efforts.
Chris Eagles let fly from 25 yards but fired over, Stephen Henderson saved Craig Davies' speculative effort and Marcos Alonso drove wide.
After the break Murphy pounced on some dozy defending from Zat Knight and burst towards goal.
He could have played in McGoldrick but instead opted to keep charging into the penalty area, only to eventually lift his shot too high.
Bolton finally found their way into the Ipswich area on the hour mark when Alonso picked out Eagles.
The winger's first touch was superb but his second let him down as he scuffed the chance wide.
At the other end McGoldrick skipped inside from the right wing and curled a shot narrowly wide of Lonergan's far post.
Freedman sent on club captain Kevin Davis to replace namesake Craig and the veteran striker immediately began making a nuisance of himself.
Eagles picked out Davies in the area but Tommy Smith just managed to block his shot.
Davies then almost turned provider when he lofted the ball to David Ngog but the Frenchman put his header wastefully wide.
Edwards could have found the net with six minutes to go after he was cleverly set up by Luke Hyam, but the winger could not control his first-time shot and it bounced the wrong side of the post.
However, he made no mistake in the 88th minute after Emmanuel-Thomas charged down the wing and crossed from the byline, the 34-year-old tucking in the cross to secure three valuable points.