Both teams showed flashes in the opening half-hour, but it was the U.S. that took the lead through Reyna right on 30 minutes when his shot from the top of the penalty area took a wicked deflection and caught out Northern Ireland keeper Conor Hazard.
U.S. keeper Zack Steffen did well to get down for a line drive from Shayne Lavery shortly before half-time and the U.S. took a 1-0 lead into the break.
Yunus Musah, who became officially cap tied to the U.S. by making his fourth appearance for the national team, was replaced by Sebastian Lletget at half-time, while Bryan Reynolds was handed his senior team debut when he came on for Sergino Dest after the intermission.
Pulisic doubled the Americans’ lead from the spot shortly before the hour mark, converting the penalty he drew when Danny Ballard tripped him as he darted across the area.
Berhalter made more changes after the second U.S. goal with Chris Richards, Daryl Dike and Brenden Aaronson all coming into the game.
Pulisic set up Dike with a lovely through ball as the second half wore on, but the Barnsley loanee had a weak attempt saved by Hazard as he looked to score his first international goal for the U.S.
Northern Ireland picked up a consolation goal as full-time approached when Niall McGinn pounced on a ball in the U.S. penalty area and smashed a volley over the head of Steffen to spoil the Manchester City keeper’s clean sheet for the day.