Tim Cahill's late header ensured that Everton's fine start to the season continued at Fratton Park.
Portsmouth's Nigel Quashie hit the woodwork in the early stages before Everton started to assume control.
Steve Watson narrowly missed the target and Dejan Stefanovic made a superb block to deny Marcus Bent.
After the break Bent missed twice from the edge of the area before Cahill headed home Lee Carsley's free-kick to seal a fine win.
Everton's only defeat this season remains their opening-day loss to Arsenal and they have since moved up to third place in the table.
And in beating Portsmouth at Fratton Park David Moyes' team overcame a side who had not lost at home in the Premiership since 17 March.
Pompey had started with the confidence their home form would suggest and had early chances.
Quashie, back in the Pompey side after injury, went close twice in a matter of minutes.
A poorly-struck drive from distance after 12 minutes took a vicious deflection and forced a good save from Nigel Martyn.
Quashie's second effort was crisply struck and thundered against the woodwork with Martyn stranded.
In between, Everton almost scored but Watson missed the target after making a superb run to meet Kevin Kilbane's teasing cross.
And Everton, superbly using wide areas to create space, soon started to dominate.
Shaka Hislop was called into action midway through the half when David Weir met Thomas Gravesen's inswinging corner.
And Gravesen created further problems for the Pompey defence when he cut the ball towards Bent after a surging run to the byeline.
Bent seemed certain to score but was thwarted by Stefanovic's brilliant clearance.
A long throw from Gravesen caused problems in the Pompey penalty box but former Everton defender David Unsworth made a timely clearance with Cahill lurking.
Portsmouth boss Harry Redknapp replaced the ineffectual Eyal Berkovic with Lomana LuaLua at half-time.
And Unsworth soon tested Martyn with a stinging drive as the home team looked to up the tempo.
Everton countered with the introduction of veteran striker Duncan Ferguson and he soon created a chance for Bent, who drilled his shot narrowly over the bar.
Another telling pass from Kilbane picked out Bent in space 18 yards from goal but, after taking too long to control the ball, he shot wide.
Weir headed a yard wide from a corner as Everton continued to press and the visitors were eventually rewarded when Cahill scored with 10 minutes left in what was his first game back since suspension.
Portsmouth: Hislop, Primus, Griffin, Stefanovic, Unsworth, Faye, Berkovic (LuaLua 45), Quashie, Berger, Yakubu, Fuller (Kamara 68).
Subs Not Used: Ashdown, Cisse, Taylor.
Everton: Martyn, Hibbert, Stubbs (Yobo 45), Weir, Pistone, Watson (Ferguson 56), Carsley, Cahill, Gravesen, Kilbane, Bent.
Subs Not Used: Wright, Campbell, McFadden.
Goals: Cahill 80.
Ref: D Gallagher (Oxfordshire).