The Gunners opened the scoring on 18 minutes when Eduardo beat two Pompey defenders before finding Diaby in the box and the midfielder lashed the ball beyond David James.
Arsenal doubled their lead three minutes later and it was Diaby again who produced a cool finish after more good approach play by Eduardo.
Portsmouth were limited to long-range efforts but did pull a goal back on 37 minutes when Younes Kaboul headed home from Nadir Belhadj's deep cross.
The goal gave Portsmouth hope but six minutes after the restart Arsenal made it 3-1 through William Gallas.
The home side kept up the pressure and increased their lead on 68 minutes when substitute Aaron Ramsey drove the ball home from Robin van Persie's cross.