Captain James Rodriguez overcame a shoulder problem to score the match-winner in the first half after Carlos Bacca gave Colombia an early lead at the Rose Bowl in Pasadena, California on Wednesday (AEST).
The goal was James' second in as many Copa America games as the Real Madrid attacker extended his goalscoring tally for Colombia to 16.
Paraguay made things difficult for Colombia in the second half as substitute Victor Ayala pulled a goal back with a stunning strike, but a red card to Oscar Romero dented their chances of finding an equaliser.
The Lanus midfielder received two yellow cards in as many minutes, with Colombia holding out for victory.
The win means Colombia advance to the last eight of the centenary tournament, while Paraguay must beat the United States in its final Group A fixture to go through to the quarter-finals.
Colombia coach Jose Pekerman named an unchanged line-up, with James keeping his spot in the side despite concerns over his fitness following a shoulder injury sustained against USA last week.
Paraguay counterpart Ramon Diaz made just the one change, replacing Derlis Gonzalez with Miguel Almiron for the 22-year-old's international starting debut.
Colombia looked the livelier of the two sides in the opening stages and James threatened with a shot from distance before Bacca gave them the lead in the 12th minute.
Cristian Zapata won a corner after his header was blocked, and James delivered a perfect ball for Bacca to head home the opener.
James had the chance to score himself in the 16th minute but his effort was saved by Paraguay goalkeeper Justo Villar.
Colombia shot-stopper David Ospina hardly touched the ball in the opening half, and a Robert Piris Da Motta strike was the only shot they had on goal in the opening 22 minutes, but even that was blocked by defender Jeison Murillo.
However, Colombia eventually did double its advantage through James, after Edwin Cardona's brilliant lay-off inside the box set up the Madrid attacker to smash home the second.
Paraguay managed to pull one back in the 34th minute through a Paulo da Silva header, but he was adjudged to have been offside by the assistant referee in a tight, but correct call.
Cardona set up Bacca with a delightful curling cross a minute later but the Milan forward could not collect with the ball properly, before Ospina was forced into his first save of the half approaching the break, putting out his hand to deny a bouncing free kick.
Paraguay was unlucky not to go into the half at least one goal down, after Dario Lezcano smashed a free-kick in a dangerous position off the crossbar.
Colombia thought they had scored a third when Bacca put the ball into the net in the 69th minute but the goal was ruled out for offside, and Paraguay struck back just two minutes later.
Substitute Ayala received the ball from distance but unleashed a thunderous effort past Ospina to reduce the deficit with just under 20 minutes remaining.
However, the task at hand became even more difficult for Paraguay when they were reduced to 10 men after Romero received two yellow cards in as many minutes.
Cardona almost buried the game a minute later but his strike came off the post, however Colombia wsa able to run out the game as Paraguay pushed hard for an equaliser to no avail.