The striker hammered home a low right-footed shot from 15 yards out after Byron Moore's pass across the box had created the opportunity. It proved the decisive moment of a low-key contest.
Both goalkeepers made fine second-half saves, Oldham's Connor Ripley keeping out a stinging drive from Stuart Sinclair and Rovers' Joe Lumley diving to keep out a Lee Erwin volley.
A drab first half featured nothing more than long-range efforts from both teams. Rovers midfielder Billy Bodin produced two of them, but on each occasion was denied by Ripley.
Harrison also brought a save from Ripley, while - at the other end - Oldham's Tope Obadeyi fired straight at Lumley and as Erwin shot wide.
Rovers edged a close contest and left Oldham with nothing to show for a spirited performance.
Match report supplied by the Press Association.
Match ends, Bristol Rovers 1, Oldham Athletic 0.
Second Half ends, Bristol Rovers 1, Oldham Athletic 0.
Attempt blocked. Chris Taylor (Oldham Athletic) left footed shot from the left side of the box is blocked.
Billy Bodin (Bristol Rovers) wins a free kick in the defensive half.
Foul by Ousmane Fane (Oldham Athletic).
Delay in match Billy Bodin (Bristol Rovers) because of an injury.
Attempt missed. Ryan Flynn (Oldham Athletic) right footed shot from the right side of the box is too high.
Foul by Ryan Broom (Bristol Rovers).
Ryan McLaughlin (Oldham Athletic) wins a free kick in the defensive half.
Foul by Robert Harris (Bristol Rovers).
Ryan McLaughlin (Oldham Athletic) wins a free kick in the defensive half.
Substitution, Oldham Athletic. Lee Croft replaces Oliver Banks.
Robert Harris (Bristol Rovers) wins a free kick on the right wing.
Foul by Ryan Flynn (Oldham Athletic).
Corner,  Oldham Athletic. Conceded by Tom Lockyer.
Corner,  Oldham Athletic. Conceded by Ellis Harrison.
Corner,  Oldham Athletic. Conceded by Ryan Sweeney.
Jermaine Easter (Bristol Rovers) wins a free kick on the left wing.
Foul by Brian Wilson (Oldham Athletic).
Corner,  Oldham Athletic. Conceded by Joe Lumley.
Attempt saved. Lee Erwin (Oldham Athletic) right footed shot from the right side of the six yard box is saved in the bottom right corner.
Corner,  Oldham Athletic. Conceded by Stuart Sinclair.
Goal!  Bristol Rovers 1, Oldham Athletic 0. Ellis Harrison (Bristol Rovers) right footed shot from the centre of the box to the bottom right corner. Assisted by Byron Moore.
Attempt saved. Stuart Sinclair (Bristol Rovers) right footed shot from outside the box is saved in the top left corner.
Robert Harris (Bristol Rovers) wins a free kick on the right wing.
Foul by Lee Erwin (Oldham Athletic).
Substitution, Bristol Rovers. Ryan Broom replaces Joe Partington.
Attempt missed. Byron Moore (Bristol Rovers) right footed shot from the left side of the box is just a bit too high.
Substitution, Oldham Athletic. Ousmane Fane replaces Aiden O'Neill.
Substitution, Oldham Athletic. Paul Green replaces Tope Obadeyi.
Byron Moore (Bristol Rovers) wins a free kick in the attacking half.
Foul by Ryan Flynn (Oldham Athletic).
Stuart Sinclair (Bristol Rovers) is shown the yellow card for a bad foul.
Foul by Stuart Sinclair (Bristol Rovers).
Tope Obadeyi (Oldham Athletic) wins a free kick in the defensive half.
Corner,  Oldham Athletic. Conceded by Stuart Sinclair.
Jermaine Easter (Bristol Rovers) wins a free kick in the defensive half.
Foul by Aiden O'Neill (Oldham Athletic).
Substitution, Bristol Rovers. Jermaine Easter replaces Luke James.
Substitution, Bristol Rovers. Byron Moore replaces Cristian Montaño.
Ellis Harrison's 75th-minute winner was enough for Bristol Rovers to deny Oldham Athletic League One safety as they recorded a narrow victory at the Memorial Stadium.