Midfielder Lorik Cana picked up the ball following a Bolton clearance before sending over a highlooping ball to the back post where Campbell had found plenty of space for a side-foot volley past Jussi Jaaskelainen.
The veteran defender gathered the ball 30 yards out, held off the challenge of Brahim Hemdani and sent a looping volley high beyond the flailing fingertips of McGregor.
During an enthralling and competitive opening half, the heavily involved Grant had been kicked in the head by a very high foot from Andrew as the striker stretched to reach a looping ball, while James O'Connor sustained a cut above his eye as he competed for a loose ball.