PSV came close to taking the lead in the fourth minute when Gaston Pereiro sent a clever free kick towards the top corner, but Barcelona goalkeeper Marc-Andre ter Stegen was on hand to make a smart save.
Barcelona had a lot of the ball in the first 15 minutes, but it was PSV that were having the better moments in the final third, with Hirving Lozano and Steven Bergwijn both causing problems in wide positions.
Pereiro struck the post with an excellent long-range effort in the 16th minute as PSV came close once again, before Philippe Coutinho curled one wide of the target down the other end of the field.
Pereiro had another huge chance in the 25th minute after finding space inside the Barcelona box, but the midfielder could only hook the ball under the crossbar.
Missing the injured Luis Suarez, Messi was operating in the number nine role for Barcelona, and the Argentine started to see more of the ball as the first half developed.
Jeroen Zoet then had to make two smart saves to deny Messi as the Spanish champions desperately searched for the opener during a period of domination.
Zoet had to keep out a powerful Messi strike early in the second period as Barcelona started on the front foot. PSV were also having their moments, however, and Ter Stegen saved well from Jorrit Hendrix in the 54th minute.
It was Barcelona that made the breakthrough in the 61st minute though, with Messi working a yard of space inside the PSV box before finding the back of the net with a near-post finish.
The Spanish champions did double their lead in the 70th minute, however, when Pique steered a clever Messi free kick into the bottom corner of the net.
Malcom then turned a low Dembele cross wide of the post in the 73rd minute, before Bergwijn just missed the post down the other end during an open period of the match.
Lozano was next to come close for PSV, with the Mexican breaking into the Barcelona box before firing straight at Ter Stegen 15 minutes from time.
PSV had a lifeline in the 83rd minute, however, when De Jong headed an Angelino cross into the bottom corner to continue his excellent run of form.
The home side could not find a second though, and their European journey for the 2018-19 campaign has come to an end as they can no longer mathematically finish in third position.
Barcelona should have scored a third in the final exchanges when Messi released Malcom, but the substitute fired over the crossbar as it ended 2-1 on the night.
PSV EINDHOVEN (4-3-3): Zoet; Dumfries, Schwaab, Viergever, Angelino; Rosario, Hendrix (Gutierrez 71'), Pereiro (Malen 71'); Lozano, De Jong, Bergwijn (Romero 79')
BARCELONA (4-3-3): Ter Stegen; Semedo, Lenglet, Pique, Alba; Busquets, Rakitic, Vidal; Coutinho (Malcom 70'), Messi, Dembele (D Suarez 80')