Nico Rosberg has closed the gap on his Mercedes team mate and his fierce rival Lewis Hamilton after an action-packed race at the Spa circuit in Belgium.