Zaine Francis-Angol tried his luck from range inside the opening five minutes, but his swerving shot failed to give Motherwell the lead.
The visitors did find the back of the net early on though when Lionel Ainsworth blasted the ball into the roof of the net following a quick counter-attack.
St Johnstone got back on level terms just before the break though when Lee Croft crossed the ball in for O'Halloran to smash into the back of the net.
Henrik Ojamaa could have restored Motherwell's lead early in the second half, but his sliced effort was stopped by Mannus.
However, the home side piled forward again late on, resulting in James McFadden sliding the ball in for O'Halloran to score with a similar strike to his first.
Josh Law tried to force an equaliser in stoppage time, but his effort from outside the box was just wide of the upright.
The result moves St Johnstone up to eighth in the table, and leaves Motherwell 11th, just two points ahead of bottom side Ross County.