Bristol Rovers ended Cheltenham's 10-match unbeaten run in Mark McGhee's first game in charge of the visitors.
In an evenly fought first half, Chris Zebroski's header grazed the inside of the post while Darryl Duffy and Kaid Mohamed both fired over for the hosts.
But Zebroski broke the deadlock shortly after the break with his clinical finish from the edge of the area.
Eliot Richards sealed the win when he capitalised on Alan Bennett's error in the box and poked home.
Miscommunication between Robins captain Bennett and keeper Scott Brown almost gifted Rovers a third late on, but Scott McGleish headed wide after pouncing on the loose ball.
VIEWS FROM THE DRESSING ROOM
Cheltenham Town manager Mark Yates told BBC Radio Gloucestershire:
"We've got to do our jobs properly, from the first minute to the last, and we didn't do what we are good at.
"We didn't do ourselves justice, too many people were off their game, we were nowhere near what we try to play like.
"We've got to move on quickly and we will, we'll be back in Monday to work hard and make sure we put it right next Saturday."
Bristol Rovers manager Mark McGhee told BBC Radio Bristol:
"In a sense it went to plan. We set ourselves up in a shape that would make things difficult for them.
"The discipline the boys showed in playing that shape was brilliant.
"To get the two goals was the dream ticket."