Swindon came closest early on when a David Ball's header hit the crossbar, then minutes later a 20 yard shot from Bristol Rovers hit the post.
Morrison gave Swindon the lead just before half time, when he was able to score from close range to make it 1-0 after a cross from Rose.
Pericard then made it 2-0 on 57 minutes with a well taken header.
Swindon came close to getting a third goal, before in injury time David Lucas fouled Hoskins just inside the box, and a penalty was awarded. Hughes scored from the spot sending Lucas the wrong way to make it 2-1.
Overall a good game from Swindon. This win moves Swindon back up itnto 14th place.