Ruthless finishing proved to be the difference as Rovers surged out of sight in the second half, when Tommy Rowe also found the net.
Rovers will remain top of the table regardless of results this weekend and will have an advantage of at least eight points over fourth place.
The deserved triumph saw them extend their unbeaten home record and end Portsmouth's run without defeats on the road at the ninth game.
Darren Ferguson made one change from the side that edged past Stevenage with Craig Alcock in for Harry Middleton as Rovers switched back to a 4-4-2 with a diamond midfield.
And they got off to the best possible start as they took the lead inside five minutes.
James Coppinger crossed from the right, Matty Blair flicked on and Marquis had the freedom of the box to nod home from close range past David Forde.
Conor Grant drilled a first time effort from the edge of the box moments later but Forde was equal to the strike.
Marko Marosi produced a wonderful save to keep out a Matt Clarke header, diving low to tip the ball onto his post.
The game went through a breathless end to end phase. Niall Mason drilled first time into the sidenetting from a half clearance while Marquis headed off the outside of the post after a fine floated cross from Craig Alcock.
Portsmouth began to have more of an attacking say in the game and found success down the right flank.
The visitors pressed very well, denying Rovers any time on the ball and it led to plenty of mistakes.
It took a timely block from Conor Grant to keep out a sweet volley from Gareth Evans, sparking a flurry of corners for the visitors.
Rovers looked threatening on the counterattack. Tommy Rowe was crowded out after being played in with a superb ball from Alcock while Grant lashed a shot well over the bar after picking up a Coppinger pass.
Four minutes from the break, Portsmouth found the leveller.
Jordan Houghton lost possession in the middle of the park and former Rovers winger Kyle Bennett slid in Naismith who raced forward and slammed under Marosi.
The second half began as an end to end affair.
Marosi was called on to make two saves early in the period, first plucking a Clarke header out of the air before dropping to hold a low fizzing shot from Bennett which deflected off Smith.
But just before the hour mark, Rovers went back in front.
A sweeping move starting inside the own box was finished off in emphatic style when Coppinger slid in Rowe who smashed past Forde on the angle from 12 yards.
And they stretched their advantage 19 minutes from time.
Rowe found space of a cross which deflected in but Marquis watched it all the way and smacked in a superb volley which gave Forde no chance.
The one sour note for Rovers came in the last five minutes when keeper Marosi was stretchered off, replaced by Ross Etheridge.
Rovers: Marosi (Etheridge 87), Alcock, Baudry, Butler, Mason, Houghton, Blair (Williams 55), Grant, Rowe, Coppinger (Middleton 67), Marquis. Subs not used: Wright, Keegan, Beestin, May.
Portsmouth: Forde, Evans, Burgess, Clarke, Stevens, Baker (Lalkovic 62), Rose, Doyle, Bennett (Roberts 67), Naismith (Chaplin 75), Smith. Subs not used: O'Brien, Whatmough, Linganzi, Hunt.
Referee: Jeremy Simpson (Lancashire)
Attendance: 5,568 (669)
Full report and analysis from Paul Goodwin to follow