Cesc Fabregas' late goal earned Barcelona a hard-fought 1-0 UEFA Champions League win over 10-man Celtic at Celtic Park.