The visitors were totally dominant in the first half, just as they had been when the sides met in the FA Cup last month.
And Williams scored his first two goals of the season before the break, completing a fine passing move and then firing home another.
Kenny Jackett unsurprisingly stuck with the same side that eased to victory against Peterborough on home soil the previous week.
But there was a welcome return to the bench for Michael Jacobs, who had not featured since injuring his knee at Sunderland seven weeks earlier.
Jack Whatmough just about managed to get a long ball back to Craig MacGillivray soon after the game got started.
But, that aside, the visitors were totally dominant in the opening exchanges, without being able to test their former loan keeper David Cornell.
A series of Lee Brown corners did cause trouble among the Ipswich back-line, but they managed to survive that period of pressure.
John Marquis came close to breaking the deadlock on nine minutes, but Cornell got down low to his left to push behind the striker’s curling shot.
The stopper’s poor clearance immediately put the Tractor Boys in a spot of bother and Alan Judge recovered well to stop Andy Cannon taking advantage.
Another good chance feel the Blues’ way midway through the first half, with Ronan Curtis blazing over after being found in the box by Marcus Harness.
And the hosts then almost broke the deadlock themselves, with Craig MacGillivray using his legs to deny Armando Dobra.
Pompey got the goal their overall play deserved on 29 minutes, however – and it was an absolute beauty that started with a throw.
A pass from Cannon was deftly flicked on by Williams for Harness, who drilled a low cross into the area from the right.
The ball was unselfishly laid off by Marquis and WILLIAMS made no mistake with his finish, rifling into the top corner to open his account for the season.
It almost got even better for the Blues when Brown’s delivery was missed by Curtis and Tom Naylor drove a shot wide.
They did have a second goal to celebrate just before the break, though, as Naylor’s long ball was nodded on by Curtis for WILLIAMS to drill home his second of the afternoon.
Ipswich Town 0
Williams then set up a great opportunity once the action restarted, whipping in a teasing cross that was nodded wide by Marquis.
He went closer soon after, heading against the crossbar when Curtis delivered a fine free-kick from the left.
A quick break at the other end led to a corner that was only partially cleared and Sean Raggett had to bravely fling himself into the path of a fierce effort from Dobra.
Pompey were forced to make a change just before the hour mark, with Brown picking up an injury and being replaced by Cam Pring.
It was soon the turn of Curtis to rattle the crossbar after Marquis had played the ball across to him on the edge of the area.
And Cornell then came to the Tractor Boys’ rescue, somehow managing to claw away a Raggett header that appeared destined for the net.
Ipswich made changes to try to find a route back into the contest, with former Blues striker Oli Hawkins among those to enter the fray.
Pompey were working extremely hard to protect their lead and still pose threats at the other end, with Williams a tireless presence all over the pitch.
And the Blues were even able to give a few minutes to Jacobs, who replaced Curtis for the closing stages.
Ipswich (4-1-4-1): Cornell; Chambers (c),Woolfenden, McGuinness, Ward; Dozzell; Dobra, Judge (Bennetts 61), Nolan (McGavin 33), Lankester (Hawkins 70); Jackson (Drinan 61)
Booked: Lankester, McGuinness, McGavin
Subs not used: Holy, Nsiala, Kenlock
Pompey (4-2-3-1): MacGillivray; Johnson, Whatmough, Raggett, Brown (Pring 59); Naylor (c), Cannon; Harness, Williams, Curtis (Jacobs 86); Marquis
Goals: Williams 29, 44
Booked: Curtis, Raggett, Whatmough
Subs not used: Bass, Nicolaisen, Close, Hiwula, Harrison
Referee: Thomas Bramall