Newcastle's £10million striker Oba Martins had opportunities to score but his header was cleared off the line at the end of the first half and he powered another one against the crossbar - just before Pompey's second goal on the hour.
James defied him again late on and Newcastle manager Glenn Roeder admitted it wasn't a good day for the Nigerian.
Roeder: "Oba had a number of chances and it was a pity he didn't take the last one in particular because it would have given us a point.
"We looked a different team in the second half after a few things were said in the dressing room. The first half was very poor. We had to make some changes because some players were just not doing it.
"We took off Craig Moore after 30 minutes because he was struggling but he's only just come back from a long injury lay-off.
"He trained all right this week after being rested against Arsenal and we thought he was fit but obviously Kanu gives lots of problems to defenders and we thought it was right to make the change.
"Damien took two heavy tackles on his ankle and it has swollen up so quickly that he's already a doubt for the Chelsea match next week. He will probably have a scan tomorrow morning."