After the railway from Melbourne to Geelong was opened in 1857, agitation soon started in Ballarat for a railway link to serve the rapidly growing gold mining area. The prospectus for the £1,000,000 "Geelong, Ballaarat and North Western Railway Company" was advertised in January 1854 with the Francis Bell as the engineer. Bell surveyed and designed the line, and lithographed plans were made available with the prospectus. Because private railway companies were unable to raise the necessary capital in London, the Victorian colonial government took over the construction of trunk railway lines to Ballarat and Bendigo. Bell's plans were used as the basis for the current railway alignment by the engineer-in-chief of the Victorian Railways, George Darbyshire. Construction work on the Geelong – Ballarat railway began in 1858 under the supervision of the Victorian Railways engineer Robert Watson, and the official opening occurred on 10 April 1862. The line was built to a high standard, with double track provided throughout, bluestone station buildings at all of the initial stations, a number of bluestone bridges for roads that crossed the line, and the substantial Moorabool Viaduct over the river of the same name. The line remained the only rail route from Ballarat to Melbourne until 1889, when the Melbourne to Ballarat was opened. The Geelong to Ballarat line connected with the Geelong railway at North Geelong station, and when the 'direct line' from Ballarat to Melbourne was opened, it branched off at Warrenheip station. Single-tracking of the Geelong to Ballarat line commenced in 1892, but the majority remained double-tracked until 1934, when the 53-kilometre section from Bannockburn to Warrenheip was singled. In 1913 the Gheringhap–Maroona line was opened, junctioning with the line at Gheringhap. In 1978 passenger serviceson the line were withdrawn when the 153hp Walker railmotor used to operate them fell into disrepair, and a replacement bus service was introduced. Passenger trains from Ballarat and beyond continued to use the Geelong–Ballarat line as an alternate route to Melbourne until the 1990s, not stopping at any stations along the line. In 1995 the track between North Geelong and Gheringhap was converted to dual gauge as part of the gauge standardisation of the Melbourne–Adelaide railway. It was also at this time that the seven-kilometre section of double track from Ballarat to Warrenheip was converted to two parallel and independent lines, one running to Geelong and one to Melbourne, with the junction at Warrenheip being abolished. In 2008 track upgrading work commenced on the line as part of the rail freight improvements to the Mildura line. Improvements included installing gauge-convertible sleepers, the dual-gauging of level crossings, and drainage and ballast renewal. Upgrade work was completed in 2009. To commemorate the 150th anniversary of the opening of the Geelong-Ballarat railway, a special train ran from Geelong to Ballarat and return on Tuesday 10 April 2012, and further celebrations were held during the following weekend, on the 14 & 15 April. As part of its election policy, the state Coalition government, elected in November 2010, instituted a study into reintroducing passenger services on the line. The so-called "Rail Revival Study", obtained by the Herald Sun in mid-2013 using Freedom of Information laws, concluded that returning rail passenger services to the line was not viable due to the high cost. This decision has been discussed in detail at Regional Rail Link = Geelong, Ballarat and Bendigo where it is believed the re-opening can be achieved for considerably less cost. Most recently in November 2013 there has been a renewed push for the re-opening of these railway sections for passenger traffic.
Line guide
The line uses centralised traffic control on the 13.5 km dual gauge section between North Geelong and Gheringhap, and Train Order Working from there. Unattended crossing loops exist at Gheringhap and Warrenheip. Meredith can be used to cross trains if the signal box is attended. Lal Lal has a crossing loop that is not used.