It was a bright start to the match as both sides looked to attack as much as possible, and the first clear chance fell to Colombia when Radamel Falcao miscued a volley wide from a promising position.
Despite mostly being restricted to speculative strikes for much of the first half, Colombia were causing problems for the Brazil defence and they threatened again when Carlos Sanchez's deflected strike drifted just past the post.
The breakthrough arrived nine minutes before the interval when Brazil failed to clear a dangerous cross from Juan Cuadrado, which allowed Murillo to slot home.
Colombia came agonisingly close to doubling the lead a few moments later when Pablo Armero's cross was headed just wide by Falcao, before Teofilo Gutierrez sent another good chance wide of the target.
The entertainment continued in the early stages of the second half as Neymar sliced wide after creating space in the box, before Cuadrado fired just wide from 25 yards.
However, Brazil would come no closer than they did with a chance created by an Ospina mistake as Neymar charged down a clearance before finding Firmino, who somehow managed to send his shot over the box from 10 yards with the Colombian shot-stopper helpless.
The Hoffenheim attacker missed another good opportunity late on when he headed wide from a Douglas Costa cross as Colombia held on comfortably to move level with Brazil and Venezuela on three points in Group C.
It was a disappointing night for Brazil, but there was more frustration after the final whistle as Neymar received a red card for kicking the ball at Armero, while Colombian forward Carlos Bacca received the same punishment for clashing with the Brazilian star.