A new initiative trialed in Ballarat is this free weekend shuttle service running between Ballarat's major sights. It's bookable only via their app, which you'll need to download first.
V/Line has frequent direct trains between Melbourne (Southern Cross Station) and Ballarat (from $14.42, 1½ hours, 28 daily) and at least three services from Geelong ($10.20, 1½ hours)
Runs buses between Adelaide ($60, 8¾ hours, departs Adelaide 8.15pm) and Melbourne ($50, 1¾ hours), stopping in Ballarat if you ask the driver.
Goes direct from Melbourne Airport to Ballarat train station (adult/child $35/17, 1½ hours, 12 daily, seven on weekends).