Milan fumbled the opportunity of a top eight Champions League finish after crumbling away to Dinamo Zagreb, with Yunus Musah sent off in the first half.