The home side dominated the first half and only a series of fine saves from Gavin Bazunu kept the scores level at the break.
It was a different story after the restart, but the Blues could not find a breakthrough and Ethan Robson completed a quick counter-attack to condemn them to defeat.
Danny Cowley made one change from the side that were narrowly beaten at Wigan in the last League One outing a fortnight earlier.
Ronan Curtis dropped to the bench to make way for Reeco Hackett-Fairchild, with new signings Miguel Azeez and Mahlon Romeo joining him among the substitutes.
There was an impressive milestone for the MK Dons skipper, with Dean Lewington making his 700th league appearance for the club.
It was the home side that looked the more likely to break the deadlock before the break, with Bazunu – back from international duty – being kept busy.
He recovered from sending a poor clearance straight to Scott Twine in the opening seconds that the forward could not capitalise on.
But the Manchester City loanee was soon at his best to prevent Troy Parrott from finding the target from an acute angle.
Parrott also curled an effort past the post before Bazunu came tearing from his line to beat him to the ball.
Pompey almost made him pay for his profligacy on 17 minutes, when Hackett-Fairchild dived to meet a teasing Kieron Freeman delivery.
The wide-man sent the ball bouncing into the turf, however, and it looped up narrowly over the crossbar.
A quiet spell followed, but it was livened up again when Hiram Boateng hit a ferocious strike from the edge of the box that cannoned off the inside of the post.
Bazunu was soon called into action again, getting down low to his right to deal with Harry Darling’s downward header from a Matt O’Riley corner.
The keeper then made an even better save to stop Parrott bending the ball home after being teed-up by Twine.
Sean Raggett showed plenty of commitment to the cause, putting his head where it hurts to deal with a long ball.
But it was Bazunu at the centre of the action again just before the break, this time acrobatically dealing with a long-range Twine effort.
MK Dons 0
The visitors looked a bit brighter once the second half started, although an early spell of pressure came to nothing.
And Cowley decided to freshen things up with a change on 54 minutes, as Hackett-Fairchild made way for Curtis in the forward line.
A second switch followed a few moments later, with Romeo making his league debut in place of Freeman at right-back.
However, it was two men already on the pitch who combined to almost break the deadlock in Pompey’s favour on the hour mark.
Marcus Harness slipped a neat pass through to Marquis, whose low angled shot was kept out by Dons keeper Andrew Fisher.
And the striker was demanding the ball at the back post on 64 minutes, with Curtis electing to have a pop himself after cutting in from the left and drawing a parried save from Fisher.
It was a reverse of the opening half, with Pompey now looking the dominant team and posing plenty of problems.
But MK Dons showed a more clinical touch to open the scoring after breaking quickly up the pitch from a Blues corner.
Parrott’s superb cross-field pass sent Twine charging through on goal and he unselfishly squared for Robson to slot home.
Cowley soon made his final throw of the dice, with Ellis Harrison – who netted a Papa John’s Trophy treble earlier in the week – replacing Marquis up front.
But another break almost saw the home side double their lead on 81 minutes, as Parrott dithered too long over his shot before eventually rolling the ball wide.
Pompey were trying their best to get back into the contest, but MK Dons were holding firm at the back.
And they saw out five minutes of stoppage-time to ensure three successive away defeats for the Blues and have them longing for next week’s Fratton return.
MK Dons (3-4-3): Fisher; O’Hora, Darling, Lewington (c); Watson (Kioso 69), O’Riley, Robson, Harvie; Boateng (McEachran 62), Parrott (Watters 90), Twine
Goals: Robson 72
Booked: Parrott, Fisher
Subs not used: Ravizzoli, Jules, Brown, Martin
Pompey (4-2-3-1): Bazunu; Freeman (Romeo 57), Raggett, Robertson (c), Brown; Morrell, Williams; Harness, Tunnicliffe, Hackett-Fairchild (Curtis 54); Marquis (Harrison 78)
Subs not used: Bass, Ogilvie, Thompson, Azeez
Referee: Marc Edwards
Attendance: 10,822 (2,920 Pompey fans)