China edge past gritty Indonesia, in semi-finals