Zapata's 86th-minute goal was enough for Carlos Queiroz's men in the Group B encounter after they had struggled to consistently threaten a well-organised Qatar side.
Radamel Falcao started on the bench and James Rodriguez's impact was limited, at least until the latter set up the winner with a sublime pass.
Zapata met James' wonderful pass and headed into the far corner to move Colombia onto six points, while Qatar was left on one.
Colombia had a sixth-minute header by Yerry Mina correctly ruled out for offside against Roger Martinez.
However, it should have gone ahead in the 13th minute, only for James to steer a header wide after a great Martinez cross from the right.
Colombia controlled possession – they had 68 per cent in the first half – but struggled to penetrate Qatar's defence.
The lively Juan Cuadrado forced a comfortable save from Qatar goalkeeper Saad Al Sheeb from distance, while Stefan Medina sliced an effort into the side-netting.
Colombia thought it had a penalty for a handball by Abdulaziz Hatem to begin the second half, but the decision was reversed after a VAR review.
Set-pieces continued to look like Colombia's most likely avenue to a goal as Mina headed a corner wide in the 56th minute.
Martinez squandered one of his side's best chances just after the hour-mark, cutting inside after a good pass from James but shooting low and straight at Al Sheeb.
Colombia goalkeeper David Ospina was tested twice before Al Sheeb made another fine stop to deny Martinez.
But Queiroz's men would find their goal, James' wonderfully chipped pass met by Zapata for the match-winner before the latter missed a glorious chance to complete his brace.